早上系统换用proxool连接池后出现如下异常.
执行数据库操作的时候
警告:00021 (06/06/00) - #9 registered a statement as closed which was't known to be open高手指点下

解决方案 »

  1.   

    用的那个jdbc驱动……?数据库服务启动了吗?或者是url的问题
      

  2.   

    谢谢
    ojdbc.jar;启动了;url:
    jdbc:oracle:thin:@192.168.96.10:1521:orcl查询数据没有问题,在更新数据的时候出现这个异常
      

  3.   

    配置完proxool.xml
    连接代码如下:
      public synchronized int openDB(int i) {
        if (i == 1) {
          try {
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver"); 
            //org.logicalcobwebs.proxool.configuration.JAXPConfigurator.configure("proxool.xml", false);
            conn= DriverManager.getConnection("proxool.Develop");
            if (conn != null) {
              //stmt = conn.createStatement(ResultSet.HOLD_CURSORS_OVER_COMMIT,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
              stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                          ResultSet.CONCUR_READ_ONLY);         }
            else {
              return 0; //server busy false;
            }
          }
          catch (Exception ex) {
            log("DatabaseBean.openDB: " + ex.getMessage());
            return -1; //open error false;
          }
        }
        return 1; //open success true;
      }可以去得连接,但是出现异常,还有另一个异常似乎是连接没有关闭掉,系统自动关闭.
    信息如下:
    警告: #0004 was active fro 309214 millisseconds and has been removed automaticaly performed is unknown because the trace property is not enabled.求助阿!
      

  4.   

    sorry
    昨天下午有事出去了,偶感觉是你的jdbc不支持滚动结果集的问题
      

  5.   

    这只是警告
    去掉statement对象的close()方法
    就不出警告了
      

  6.   

    修改了getConnection(), public synchronized Connection getConnection()
    {
    if(currConnections.size()<MAX_CONNECTION)   //若当前的连接数没有达到最大
    {
    try
    {
            Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");  
            conn= DriverManager.getConnection("proxool.Develop");
            currConnections.add(conn);
    }catch(Exception e){
    log("DatabaseBean.getConnection:"+e.getMessage());
    }
    }
    else //若当前已达到最大连接数
    {
    try
    {
            conn = (Connection) currConnections.firstElement(); //取得第一个连接
            if(conn != null)
            {
             currConnections.remove(conn); //将其close
             conn.close();
            }
            conn = getConnection(); //另外新建一个连接
    }catch(Exception e){}
    }
    return conn;
    }
    根据自己对连接池的理解写的,不知道是否有逻辑上的错误?