对DBCP包中的PoolingDataSource.java增加了log:public Connection getConnection()
throws SQLException
{
logger.info("getConnection ");
Connection conn;
try{
logger.info("getConnection finish _pool.getNumActive() " + _pool.getNumActive());
logger.info("_pool.getNumIdle() " + _pool.getNumIdle());
logger.info(">>>>>>>>>>>>>>>>> prepare get conn from the pool ");
conn = (Connection)_pool.borrowObject();
if(conn != null)
conn = new PoolGuardConnectionWrapper(conn);
logger.info("GET >>>>>>>>>>>>>>>> CONNN IS from pool is " + conn);
logger.info("getConnection finish _pool.getNumActive() " + _pool.getNumActive());
logger.info("_pool.getNumIdle() " + _pool.getNumIdle());
return conn;
}catch(Exception e){
logger.error(e, e);
throw new SQLException("eee");
} }
throws SQLException
{
logger.info("getConnection ");
Connection conn;
try{
logger.info("getConnection finish _pool.getNumActive() " + _pool.getNumActive());
logger.info("_pool.getNumIdle() " + _pool.getNumIdle());
logger.info(">>>>>>>>>>>>>>>>> prepare get conn from the pool ");
conn = (Connection)_pool.borrowObject();
if(conn != null)
conn = new PoolGuardConnectionWrapper(conn);
logger.info("GET >>>>>>>>>>>>>>>> CONNN IS from pool is " + conn);
logger.info("getConnection finish _pool.getNumActive() " + _pool.getNumActive());
logger.info("_pool.getNumIdle() " + _pool.getNumIdle());
return conn;
}catch(Exception e){
logger.error(e, e);
throw new SQLException("eee");
} }
系统在等待了一段时间以后(大约15分钟),获得了数据库连接。
下面是后续的log:2006-01-13 10:57:37,825 44910702 [TP-Processor5] INFO [PoolingDataSource.java:401] - GET >>>>>>>>>>>>>>>> CONNN IS from pool is org.apache.commons.dbcp.PoolableConnection@886462
2006-01-13 10:57:37,826 44910703 [TP-Processor5] INFO [PoolingDataSource.java:402] - getConnection finish _pool.getNumActive() 1
2006-01-13 10:57:37,827 44910704 [TP-Processor5] INFO [PoolingDataSource.java:403] - _pool.getNumIdle() 0但是为什么会出现15分钟的等待呢?附:运行环境的信息如下
Apache 2.0.46
Tomcat 5.0.30
Linux #1 SMP Fri Oct 3 17:52:56 EDT 2003
Oracle(安装在windows 2003 server 平台)9.2.0.7.0
是偶尔吧.tomcat问题吧,只好猜它了