一:集成TomcatJDBC 数据源:
1:加入:tomcat-jdbc.jar (位于tomcat\lib目录下) 与 tomcat-juli.jar (位于tomcat\bin目录下)
2:加入Spring配置:
<!-- 数据源配置,使用应用内的Tomcat JDBC连接池 --> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- 同一时间可从连接池中分配的最大连接数 --> <property name="maxActive" value="${jdbc.maxActive}" /> <!-- 连接池中应保持的最大连接数 --> <property name="maxIdle" value="${jdbc.maxIdle}" /> <!-- 运行"检查已经超时/废弃的连接"的线程频率(毫秒/次),默认为5000/5秒 --> <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /> <!-- 连接超时的最小时间(单位:毫秒,默认为60000/60秒) --> <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /> <property name="defaultAutoCommit" value="false" /> </bean>
3:参考官方文档:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
二:集成Commons DBCP:
1:下载http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi,解压文件后将commons-dbcp-1.4.jar放到webapp/lib目录下.
2:在applicationContext.xml中加入XML代码:
<!-- 数据源配置, 使用应用中的DBCP数据库连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxActive" value="${jdbc.maxActive}" /> <property name="maxIdle" value="${jdbc.maxIdle}" /> <property name="defaultAutoCommit" value="false" /> <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /> <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /> <property name="remarksReporting" value="true"/> </bean>
3:官方配置文档:http://commons.apache.org/proper/commons-dbcp/configuration.html
三: JNDI配置:
1:在tomcat 的 context.xml(注意不是server.xml) 中配置JNDI:
(1):简化配置:
<Resource name="jdbc/SHAM" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" maxActive="100" minIdle="10" maxWait="10000" initialSize="10" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.6.250:3306/SHAM" />
(2):复杂配置:
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" testWhileIdle="true" testOnBorrow="true" testOnReturn="false" validationQuery="SELECT 1" validationInterval="30000" timeBetweenEvictionRunsMillis="30000" maxActive="100" minIdle="10" maxWait="10000" initialSize="10" removeAbandonedTimeout="60" removeAbandoned="true" logAbandoned="true" minEvictableIdleTimeMillis="30000" jmxEnabled="true" jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState; org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer" username="root" password="password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/mysql"/>
2:在web.xml中增加如下配置:
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/SHAM</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
3:在spring的applicationContext.xml中增加:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd"> <!-- 数据源配置,使用应用服务器的数据库连接池 --> <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/SHAM" resource-ref="true" lookup-on-startup="true"/> <!-- 或者使用如下配置亦可 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/SHAM"/> </bean> --> </beans>
4:参考官方文档:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
四:
三种数据源的JNDI配置方式:
1:在server.xml中的<GlobalNamingResources>节点中配置全局数据源:
<GlobalNamingResources> <Resource name="jdbc/db" ... </GlobalNamingResources>
且在context.xml中Context节点中配置对全局JNDI的引用:
<Context> <ResourceLink name="jdbc/db" type="javax.sql.DataSource" global="jdbc/db"/>... </Context>
2:在context.xml的Context节点中配置数据源:
<Context> <Resource name="jdbc/db" ... </Context>
3:在server.xml中的工程节点中配置数据源(缺点:不能共享数据源配置):
<Context docBase="D:\WorkSpace\web\webapp" path="/web" reloadable="false"> <Resource name="jdbc/db" ... </Context>
4:混用以上各种方式也是可以的!