日期:2014-05-16  浏览次数:20568 次

DBCP 应用的总结(一)

DBCP 应用的总结

1.Jar包下载


首先,下载必须的jar包 

dbcp包:http://jakarta.apache.org/commons/dbcp/ 

pool包:http://jakarta.apache.org/commons/pool/, 

如果下载的pool包是1.2的版本,还要下载common-collections包:

2.配置参数

username : 连接用户名

password:  连接密码

url :  连接 url( 如果连接 mysql ,格式为 jdbc:mysql://ip:port/dbname)

driverClassName : jdbc driver 名字 ( 如果是 mysql ,则为com.mysql.jdbc.Driver)

connectionProperties : 当建立一个数据库连接的时候,这些属性参数将传给 jdbc driver ,参数的形式必须是 [propertyName=property;]*  。

注: username 和 password 必须明确的传给 driver, 不必包含在这个属性中。

initialSize : 默认值是 0, 连接池创建连接的初始连接数目

maxActive : 默认值是 8, 连接池中同时可以分派的最大活跃连接数

maxIdle : 默认是 8 ,连接池中最大空闲连接数

minIdle : 默认是 0, 连接数中最小空闲连接数

maxWait : 默认值是无限大,当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 ( 在抛异常之前 )

validationQuery : 一条 sql 语句,用来验证数据库连接是否正常。这条语句必须是一个查询模式,并至少返回一条数据。一般用“ select 1 ”

testOnBorrow : 默认值是 true ,当从连接池取连接时,验证这个连接是否有效

testOnReturn : 默认值是 flase, 当从把该连接放回到连接池的时,验证这个连接是否有效

testWhileIdle : 默认值是 false, 当连接池中的空闲连接是否有效

timeBetweenEvictionRunsMilis : 默认值是 -1 ,每隔一段多少毫秒跑一次回收空闲线程的线程

numTestsPerEvictionRun : 默认值是 3 ,每次验证空闲连接的连接数目

minEvictableIdleTimeMilis : 默认值是 1000 * 60 * 30(30 分钟 ) ,连接池中连接可空闲的时间

connectionInitSqls : 默认值是 null, 一组用来初始化连接的 sql 语句,这些语句只在连接工厂创建连接时执行一次。

removeAbandoned : 默认值是 false, 是否清理 removeAbandonedTimeout 秒没有使用的活动连接 , 清理后并没有放回连接池  

removeAbandonedTimeout : 默认值是 300( 秒 ), 活动连接的最大空闲时间

logAbandoned : 默认值 false, 连接池收回空闲的活动连接时是否打印消息

注:

1. 红色字体的属性一般都会设置

2.   minEvictableIdleTimeMilis,removeAbandonedTimeout 这两个参数针对的连接对象不一样,minEvictableIdleTimeMillis 针对连接池中的连接对象 ,removeAbandonedTimeout 针对未被 close 的活动连接 (被调用,不在池中的连接对象 )

3.   maxWait 、 timeBetweenEvictionRunsMilis 、 minEvictableIdleTimeMilis 单位是毫秒,removeAbandonedTimeout 单位是秒


3. 异常处理

dbcp是采用了commons-pool做为其连接池治理,testOnBorrow,testOnReturn, testWhileIdle是pool是提供的几种校验机制,通过外部钩子的方式回调dbcp的相关数据库链接(validationQuery)校验 
testOnBorrow : 顾明思义,就是在进行borrowObject进行处理时,对拿到的connection进行validateObject校验 
testOnReturn : 顾明思义,就是在进行returnObject对返回的connection进行validateObject校验,个人觉得对数据库连接池的治理意义不大