DBCP数据源配置,数据源长时间不使用出现Could not close JDBC Connection

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="10" />
<property name="maxActive" value="50" />
<!--连接数据库超时的解决方法-->
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout" value="90" />
<property name="logAbandoned" value="false" />
<property name= "timeBetweenEvictionRunsMillis" value="30000" />
<property name= "numTestsPerEvictionRun" value="30" />
<property name="minEvictableIdleTimeMillis" value="1800000" />
<property name="validationQuery" value="SELECT 1" />

</bean>


testOnBorrow=false由于不检测池里连接的可用性,
于是假如连接池中的连接被数据库关闭了,应用通过连接池getConnection时,都可能获取到这些不可
用的连接,且这些连接如果不被其他线程回收的话,它们不会被连接池被废除,也不会重新被创建,
占用了连接池的名额
testOnborrow =true 很大的消耗性能,为了保证服务器的稳定,可以配合其他配置来避免这一点,配合testWhileIdle=true
(但是默认为false)
 和timeBetweenEvictionRunsMillis来避免这种问题,所以testOnborrow =false是可以提高效率的

猜你喜欢

转载自blog.csdn.net/qq_37054881/article/details/79457119