现在 主流的数据库连接池有:Proxool、C3P0、DBCP、tomcat-jdbc、Druid。其中tomcat-jdbc是tomcat服务器比较可靠的 数据库连接池。
Tomcat 在 7.0 以前的版本都是使用commons-dbcp做为连接池的实现,但是DBCP存在一些问题:
因此,通常J2EE中还会使用其它的高性能连接池,如C3P0,还有阿里系的druid等。为此,Tomcat 从 7.0 开始引入一个新的模块: Tomcat Jdbc Pool Tomcat Jdbc Pool 近乎兼容 DBCP,性能更高
tomcat 数据源JNDI配置样例:
<Resource name="jdbc/appdb" auth="Container"
type="javax.sql.DataSource"
maxActive="10000" maxIdle="100" maxWait="10000" logAbandoned="true"
username="root" password="root123" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@10.45.47.88:1521:orcl"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
testOnBorrow="false" testOnReturn="false"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="30000"
/>
<context:property-placeholder location="classpath:config/jdbc.properties"/>
<bean id="datasource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"
p:driverClassName="${jdbc.db.driverClassName}"
p:url="${jdbc.db.url}"
p:username="${jdbc.db.username}"
p:password="${jdbc.db.password}"
p:initialSize="10"
p:minIdle="10"
p:maxIdle="100"
p:maxActive="100"
p:maxWait="6000"
p:logAbandoned="true"
p:testOnBorrow="false"
p:testOnReturn="false"
p:testWhileIdle="true"
p:timeBetweenEvictionRunsMillis="30000"
p:minEvictableIdleTimeMillis="30000"
/>
必须配置,才能启用tomcat-jdbc:
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
并且数据库驱动必须复制一份到tomcat/lib目录下,如
属性 | 描述 |
---|---|
factory | 必需的属性,其值应为 org.apache.tomcat.jdbc.pool.DataSourceFactory |
type | 类型应为 javax.sql.DataSource 或 javax.sql.XADataSource。 根据类型,将创建org.apache.tomcat.jdbc.pool.DataSource 或 org.apache.tomcat.jdbc.pool.XADataSource。 |
属性 | 描述 |
---|---|
maxActive | (整形值)池同时能分配的活跃连接的最大数目。默认为 100。 |
maxIdle | (整型值)池始终都应保留的连接的最大数目。默认为 maxActive:100。会周期性检查空闲连接(如果启用该功能),留滞时间超过 minEvictableIdleTimeMillis 的空闲连接将会被释放。(请参考 testWhileIdle) |
minIdle | (整型值)池始终都应保留的连接的最小数目。如果验证查询失败,则连接池会缩减该值。默认值取自 initialSize:10(请参考 testWhileIdle)。 |
initialSize | (整型值)连接器启动时创建的初始连接数。默认为 10。 |
maxWait | (整型值)在抛出异常之前,连接池等待(没有可用连接时)返回连接的最长时间,以毫秒计。默认为 30000(30 秒) |
testOnBorrow | (布尔值)默认值为 false。从池中借出对象之前,是否对其进行验证。如果对象验证失败,将其从池中清除,再接着去借下一个。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。为了实现更高效的验证,可以采用 validationInterval。 |
testOnReturn | (布尔值)默认值为 false。将对象返回池之前,是否对齐进行验证。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。 |
testWhileIdle | (布尔值)是否通过空闲对象清除者(如果存在的话)验证对象。如果对象验证失败,则将其从池中清除。注意:为了让 true 值生效,validationQuery 参数必须为非空字符串。该属性默认值为 false,为了运行池的清除/测试线程,必须设置该值。(另请参阅 timeBetweenEvictionRunsMillis) |
timeBetweenEvictionRunsMillis | (整型值)空闲连接验证/清除线程运行之间的休眠时间(以毫秒计)。不能低于 1 秒。该值决定了我们检查空闲连接、废弃连接的频率,以及验证空闲连接的频率。默认为 5000(5 秒) |
其他请参考官方文档:https://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
或者译文:http://wiki.jikexueyuan.com/project/tomcat/tomcat-jdbc-pool.html