PageQuery pageQuery = null;
        try {
             pageQuery = DBOperators.createPageQuery("AAA");
               if (opFlag.equals("insert")) 
               {
                sql = "******************************************";
                if (!pageQuery.simpleUpdate(sql)) {
                    outFlag = "0";
                }
            } else if (opFlag.equals("update")) {
                sql = "******************************************";
                pageQuery.addBatchSql(sql);
                pageQuery.exeBatchSql();
            } else if (opFlag.equals("delete")) {
                sql = "**************************************";
                pageQuery.addBatchSql(sql);
                pageQuery.exeBatchSql();
            } else {
            }
            pageQuery.getData(mainFields, mainTable, mainStrConditions,mainPageSize);
            mainPageCount = pageQuery.getPageCount();
            mainCurrentPage = ((mainCurrentPage > mainPageCount)? mainPageCount : mainCurrentPage);
            vct = pageQuery.dividePage(mainCurrentPage);            if (detailQuery.equals("true")) {
                sql = "***************************************************";
                ResultSet mainRS = pageQuery.getData(sql);
               }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        finally
        {
         Debug.println("*********************王涛连接池关闭,finally****************************");
         pageQuery.close();
       }
后台提示错误
*********************王涛连接池关闭A,finally****************************
<释放连接池 PUR子系统,weblogic连接,创建时间:1203818445515>
<2008-2-24 上午10时00分45秒 CST> <Warning> <JDBC> <BEA-001074> <A JDBC pool connection leak was detected. A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool. The following stack trace at create shows where the leaked connection was created.  [Null exception passed, creating stack trace for offending caller]
at weblogic.utils.StackTraceUtils.throwable2StackTrace(StackTraceUtils.java:28)
at weblogic.jdbc.wrapper.PoolConnection.finalizeInternal(PoolConnection.java:84)
at weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection.finalize(Unknown Source)
at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
at java.lang.ref.Finalizer.runFinalizer(Finalizer.java:83)
at java.lang.ref.Finalizer.access$100(Finalizer.java:14)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:160)

解决方案 »

  1.   

    pageQuery.close(); 
    代码贴上来
      

  2.   

    pageQuery.close();是封装好了的
    这是我找到反编译的
    public void close()
    {
    if (_$11 == null)
    break MISSING_BLOCK_LABEL_98;
    JVM INSTR new #23  <Class StringBuffer>;
    JVM INSTR dup ;
    JVM INSTR swap ;
    StringBuffer();
    "<释放连接池 ";
    append();
    _$3;
    append();
    "子系统,";
    append();
    _$2;
    append();
    "连接,创建时间:";
    append();
    _$1;
    append();
    ">";
    append();
    toString();
    Debug.println();
    _$10.close();
    _$11.close();
    _$10 = null;
    _$11 = null;
    break MISSING_BLOCK_LABEL_98;
    SQLException sqlexception;
    sqlexception;
    sqlexception.printStackTrace();
    }
      

  3.   

    刚才忘了说了,数据库是oracle
      

  4.   

    某一连接在调用close之前被垃圾收集器回收,返回连接池,导致泄漏,再查查吧
      

  5.   

    _$10.close(); 
    _$11.close(); 
    _$10   =   null; 
    _$11   =   null; 这种写法本身有问题,前面之判断了
    if   (_$11   ==   null) 
    如果 
    _$10==null呢?会怎么样?
      

  6.   

    刚才前面忘了贴变量的定义。
    private Connection _$11;
    private Statement _$10;
    private boolean _$9;
    private ResultSet _$8;
    private int _$7;
    private int _$6;
    private int _$5;
    private int _$4;
    private String _$3;
    private String _$2;
    private long _$1;
    public int m_scrollType;
    public int m_updateType;public   void   close() 

    if   (_$11   ==   null) 
    break   MISSING_BLOCK_LABEL_98; 
    JVM   INSTR   new   #23     <Class   StringBuffer> ; 
    JVM   INSTR   dup   ; 
    JVM   INSTR   swap   ; 
    StringBuffer(); 
    " <释放连接池   "; 
    append(); 
    _$3; 
    append(); 
    "子系统,"; 
    append(); 
    _$2; 
    append(); 
    "连接,创建时间:"; 
    append(); 
    _$1; 
    append(); 
    "> "; 
    append(); 
    toString(); 
    Debug.println(); 
    _$10.close(); 
    _$11.close(); 
    _$10   =   null; 
    _$11   =   null; 
    break   MISSING_BLOCK_LABEL_98; 
    SQLException   sqlexception; 
    sqlexception; 
    sqlexception.printStackTrace(); 
      

  7.   

    你的代码里面是不是有2次的getConnection啊,
    查一下,是不是写在循环里面了!