对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");
        }    }

解决方案 »

  1.   

    有了一点进展,原来的描述不正确:
        系统在等待了一段时间以后(大约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
      

  2.   

    真是很神奇呀.
    是偶尔吧.tomcat问题吧,只好猜它了
      

  3.   

    为什么是Tomcat的问题呀?能给出进一步的说明吗?
      

  4.   

    你的pool是不是设置了什么特殊的东西呀?