用连接池的话连接并不会被关闭只是返回到连接池中。
你可以自己写一个BEAN去分配连接,包括从连接池中取得连接、记录已用连接数、最大可用连接数。当已用连接数等于最大可用连接数时,你就将连接池的最大连接数增加。

解决方案 »

  1.   

    以上问题均可以如下程序结构中得到解决:
    try{
       程序代码块
    }catch{
       错误捕获处理 
                  }finally{   释放连接池
       释放打开的文件句柄等等}
    原理:无论程序是否异常,均会执行finally中的语句
          故在finally中进行资源的释放。
      

  2.   

    建议使用 "JDBC Data Sources",这在JRUN和WebSphere中配置都很方便,使用起来也是很方便!
      

  3.   

    造成“同一个连接使用次数过多,将会导致连接的不稳定,进而会导致WEB SERVER的频频重启”通常有两种可能性:
    1、 程序设计上,利用一个链接初始化大量statement对象,例如:
      Connection conn=getFromPool();
      for (int i=0;i<10000;i++) {
        String sqlStr="......";
        PreparedStatement pStmt=conn.prepareStatement(sqlStr);
        ......
        pStmt.close();
    }
    // 虽然statement在每次循环都有关闭,但是由于程序运行太快,可能会导致垃圾为及时清除,而使得程序出现打开的游标超出最大限制的错误。
    解决这种问题,最好尽量用一个statement来完成所有工作,在循环里面用PreparedStatement.setString()等方法来改变statement的内容。
    2. 只记得关闭Connection,忘记了关闭ResultSet,和Statement。
    这种错误在不用连接池的情况下不会浮现出问题,用WebLogic的连接池好像也不会有问题,估计是WebLogic的Connection.close()方法实现得比较好。
    为保险起见,应该安装生成的相反顺序先关闭ResultSet,再关闭Statement。Connection用完了就关闭Connection。
    这是因为用了连接池以后,调用Connection.close()并非把这个链接真正关闭,只是返回给连接池供下一个用户获取。在这条Connection所创建的statement和resultset会打开一些游标,如果没有关闭就返回给连接池。就会有所谓“游标泄漏”的问题出现。