你应该在一个连接用完后显示的关闭。
connection.close();

解决方案 »

  1.   

    我想你没有明白数据库连接池的本质:
    数据库连接池里存放的都是和数据库连接的connection
    当你使用的时候,把connection取出
    当你使用结束后,把connection返回,但此时connection还是和数据库连接的,并没有销毁。getNumActive是返回给你现在活动的connection数目。使用连接池的原因就是节约时间,因为创建一个connection的时间要远远大于查询,而connection与你的具体操作是无关的,所以只要你用的时候拿一个已经存在并可以用的connection就可以了。
      

  2.   

    当然返回了....
    但是有异常抛出或其它原因,这个服务器最大的特点是就是java程序不一定会运行完(如人点击过快)。
    这个时候连接池就会涨,只涨不减。
    这个服务器的访问量也大,同时五六百人在线
    连接数一二天就上来了
      

  3.   

    换句话说,我如何能把现在active的连接关掉?
      

  4.   

    换句话说,我如何能把现在active的连接关掉?
    connection.close()就可以了
      

  5.   

    basicDS.close();//调用后也不行,    ///一般是关闭connection对象。
    basicDS.getNumActive()降下来了,但是数据库中连接数还是没有下来,   ///没关系,为了速度,数据库那面要保持一个连接池,连接不降是正确的。
    basicDS=null;//也不行,有什么办法呀,现在只有把服务器重启才可以///无此必要。
      

  6.   

    在finally段关闭数据库资源。Connection conn = null;
    Statement  stmt = null;
    ResultSet  rs   = null;try
    {
        ...
    }
    catch()
    {
        ...
    }
    finally
    {
        if ( rs != null ) rs.close();
        if ( stmt != null ) stmt.close();
        if ( conn != null ) conn.close();
    }
      

  7.   

    http://www.jdon.com/jive/article.jsp?forum=16&thread=15085