#removeAbandoned
true,false,
是否清理
removeAbandonedTimeout
秒没有使用的活动连接
,
清理后并没
有放回连接池
#removeAbandonedTimeout
活动连接的最大空闲时间
#logAbandoned true,false,
连接池收回空闲的活动连接时是否打印消息
testOnBorrow
、
testOnReturn
、
testWhileIdle
,他们的意思是当是取得连接、返回连接或连接
空闲时是否进行有效性验证(即是否还和数据库连通的)
,默认都为
false
。所以当数据库连
接因为某种原因断掉后,
再从连接池中取得的连接,实际上可能是无效的连接了,
所以,为
了确保取得的连接是有效的,
可以把把这些属性设为
true
。
当进行校验时,
需要另一个参数:
validationQuery
,对
oracle
来说,可以是:
SELECT COUNT(*) FROM DUAL
,实际上就是个简单
的
SQL
语句,验证时,就是把这个
SQL
语句在数据库上跑一下而已,如果连接正常的,当
然就有结果返回了。
还有
2
个参数:
timeBetweenEvictionRunsMillis
和
minEvictableIdleTimeMillis
,他们两个
配合,可以持续更新连接池中的连接对象,当
timeBetweenEvictionRunsMillis
大于
0
时,每
过
timeBetweenEvictionRunsMillis
时间,就会启动一个线程,校验连接池中闲置时间超过
minEvictableIdleTimeMillis
的连接对象。
还有其他的一些参数,可以参考源代码。
部分参数简要说明:
removeAbandoned
:是否自动回收超时连接
removeAbandonedTimeout
:超时时间
(
以秒数为单位
)
rmoveAbandoned=true
那么在
getNumActive()
快要到
getMaxActive()
的时候,
系统会进行无效
的
Connection
的回收,回收的
Connection
为
removeAbandonedTimeout(
默认
300
秒
)
中设置
的秒数后没有使用的
Connection
logAbandoned
:
logAbandoned=true
的话,
将会在回收事件后,
在
log
中打印出回收
Connection
的错误信息,包括在哪个地方用了
Connection
却忘记关闭了,在调试的时候很有用。
maxWait
:超时等待时间以毫秒为单位
maxIdle
:最大空闲连接
minIdle
:最小空闲连接
maxActive
:最大连接数
<
property
name
=
"Pool.PingQuery"
value
=
"select count(id) from
gnet_ss_mail_sending_lock"
/>
<
property
name
=
"Pool.LogAbandoned"
value
=
"true"
/>
<
property
name
=
"Pool.RemoveAbandoned"
value
=
"true"
/>
<
property
name
=
"Pool.RemoveAbandonedTimeout"
value
=
"50000"
/>