因为MySQL也会在服务端将idle过久的连接断掉,所以如果使用MySQL,要在连接池端处理好idle连接。这里与DBCP略有不同,如果还想按minEvictableIdleTimeMillis回收,必须将minIdle值设为0,让它每次都对所有连接进行idle时间校验。另外timeBetweenEvictionRunsMillis和minEvictableIdleTimeMillis的值也可以适当调整。另外DBCP中的numTestsPerEvictionRun属性已失效,会对全部连接进行测试。
为了防止应用忘记把连接还到连接池,可以设置removeAbandoned(默认为false),借出连接超过removeAbandonedTimeout(默认60秒)的连接就会被干掉,也是在前面的清理线程中进行检查。
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
<!-- Connection Info -->
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<!-- Connection Pooling Info -->
<property name="maxActive" value="${jdbc.pool.maxActive}" />
<property name="maxIdle" value="${jdbc.pool.maxIdle}" />
<property name="minIdle" value="0" />
<property name="defaultAutoCommit" value="false" />
<!-- <property name="url" value="http://zzck-dental.com/index" /> -->
</bean>