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校验,个人觉得对数据库连接池的治理意义不大 
testWhileIdle : 关注的重点,GenericObjectPool中针对pool治理,起了一个Evict的TimerTask定时线程进行控制(可通过设置参数timeBetweenEvictionRunsMillis>0),定时对线程池中的链接进行validateObject校验,对无效的链接进行封闭后,会调用ensureMinIdle,适当建立链接保证最小的minIdle连接数。 
timeBetweenEvictionRunsMillis,设置的Evict线程的时间,单位ms,大于0才会开启evict检查线程
validateQuery, 代表检查的sql 
validateQueryTimeout, 代表在执行检查时,通过statement设置,statement.setQueryTimeout(validationQueryTimeout) 
numTestsPerEvictionRun,代表每次检查链接的数目,建议设置和maxActive一样大,这样每次可以有效检查所有的链接. 

数据库链接 常见的问题:

1. 数据库意外重启后,原先的数据库连接池能自动废弃老的无用的链接,建立新

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值