dbcp的连接池在数据库出现网络问题,或者数据库服务器down机时会出现异常,这里出异常是正常的,但是在数据库恢复正常之后还是不能正常工作。 一直提示: Caused by: java.util.NoSuchElementException: Timeout waiting for idle object at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1134) at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:79) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) ... 3 more 这是因为在数据库出问题时,连接池里的活动连接对象占满了连接池,可以看连接池的 我们可以通过下面的配置: validationQuery="select 1 as dbcp_connection_test" testOnBorrow=true 来修复此问题, validationQuery指定一个检测连接是否有效的sql语句, testOnBorrow=true指定在从连接池中拿连接时,要检查连接是否有效,若无效会将连接从连接池中移除掉。 更多dbcp配置,请参考官网。 |
|
来自: icecity1306 > 《开发资料》