如果使用apache dbcp时:
<!—建议是一下尽量一样,没必要频繁的过期空闲连接(除非比如连接池资源紧缺,可以考虑) -->
<property name="maxIdle" value="80" />
<property name="minIdle" value="80" />
<property name="initialSize" value="80"/>
<property name="maxActive" value="80" />
<!—这个是连接池等待时间,也不要太大,比如设置在500毫秒 -->
<property name="maxWait" value="500" />
<!-- 当连接空闲时是否测试 -->
<property name="testWhileIdle" value="false"></property>
<!-- 移除无引用连接(那些没有close的)此处需要保证程序中连接一定释放 -->
<property name="removeAbandoned" value="false"></property>
<property name="removeAbandonedTimeout" value="300000"></property>
<!-- 一个连接空闲多久 remove from pool -->
<property name="minEvictableIdleTimeMillis" value="-1" />
<!-- 过期时 循环测试多少次(0 就相当于关闭定时器) -->
<property name="numTestsPerEvictionRun" value="0" />
<!-- expire connection 定时器 周期 -->
<property name="timeBetweenEvictionRunsMillis" value="120000" />
如果是mysql库,可能存在8小时问题,可以考虑开启过期定时器(numTestsPerEvictionRun=1),定期过期一下连接,timeBetweenEvictionRunsMillis时间可以设置在8小时左右.
另外可以通过如下配置来配置socket连接/读超时:
<property name="connectionProperties"
value="oracle.net.CONNECT_TIMEOUT=2000;oracle.jdbc.ReadTimeout=2000"></property>
(此处的连接和读取超时时间,请根据自己业务来考虑大小)
具体配置请参考:http://www.importnew.com/2466.html