5
我創建使用連接池這樣的池:超時等待空閒對象阿帕奇連接池
我創建一個從數據庫中的一些TAKS到getConection和EXCUTE他們。我只運行我的應用程序3次,我的應用程序拋出異常。
PoolableObjectFactory mySqlPoolableObjectFactory = new MySqlPoolableObjectFactory(
host, dbName, user, password);
Config config = new GenericObjectPool.Config();
config.maxActive = 10;
config.testOnBorrow = true;
config.testWhileIdle = true;
config.maxIdle = 5;
config.minIdle = 1;
config.maxWait = 10000;
config.timeBetweenEvictionRunsMillis = 10000;
config.minEvictableIdleTimeMillis = 60000;
GenericObjectPoolFactory genericObjectPoolFactory = new GenericObjectPoolFactory(
mySqlPoolableObjectFactory, config);
return genericObjectPoolFactory.createPool();
public Connection getConnectionFromPool() {
Connection conn = null;
try {
conn = (Connection) connPool.borrowObject();
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
但是當我運行很多線程。它扔Exeption
java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1174)
at vn.vccorp.bigdata.mysql.AdmarketPool.getConnectionFromPool(AdmarketPool.java:76)
你使用returnObject方法返回對象池嗎? – 2012-08-03 07:07:16
是的,我整理使用公共無效safeClose(康涅狄格州連接) \t \t如果我的SQL {之後送花兒給人緊密連接(參數conn!= NULL){ \t \t \t嘗試{ \t \t \t \t connPool.returnObject(康涅狄格州); \t \t \t}趕上(例外五){ \t \t \t \t e.printStackTrace(); \t \t \t} \t \t} \t} – phuongdo 2012-08-03 07:15:37