接上面代码:
public String nativeSQL(String sql) throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //  throw new java.lang.UnsupportedOperationException("Method nativeSQL() not yet implemented.");
    return aCon.nativeSQL(sql);
  }  public void setAutoCommit(boolean autoCommit) throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //  throw new java.lang.UnsupportedOperationException("Method setAutoCommit() not yet implemented.");
    aCon.setAutoCommit(autoCommit);
  }  public boolean getAutoCommit() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method getAutoCommit() not yet implemented.");
    return aCon.getAutoCommit();
  }  public void commit() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method commit() not yet implemented.");
    aCon.commit();
  }  public void rollback() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //throw new java.lang.UnsupportedOperationException("Method rollback() not yet implemented.");
    aCon.rollback();
  }  public void close() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //throw new java.lang.UnsupportedOperationException("Method close() not yet implemented.");
   if(DBConnectionPool.getCout()<=DBConnectionPool.getMinCount())
   {
    inUse = false;
   }else
   {
    closeConnection();
   }
  }  public boolean isClosed() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //throw new java.lang.UnsupportedOperationException("Method isClosed() not yet implemented.");
    return closed;
  }  public DatabaseMetaData getMetaData() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //  throw new java.lang.UnsupportedOperationException("Method getMetaData() not yet implemented.");
    return aCon.getMetaData();
  }  public void setReadOnly(boolean readOnly) throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method setReadOnly() not yet implemented.");
    aCon.setReadOnly(readOnly);
  }  public boolean isReadOnly() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method isReadOnly() not yet implemented.");
    return isReadOnly();
  }  public void setCatalog(String catalog) throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method setCatalog() not yet implemented.");
    aCon.setCatalog(catalog);
  }  public String getCatalog() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //throw new java.lang.UnsupportedOperationException("Method getCatalog() not yet implemented.");
    return aCon.getCatalog();
  }  public void setTransactionIsolation(int level) throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method setTransactionIsolation() not yet implemented.");
    aCon.setTransactionIsolation(level);
  }  public int getTransactionIsolation() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    // throw new java.lang.UnsupportedOperationException("Method getTransactionIsolation() not yet implemented.");
    return aCon.getTransactionIsolation();
  }  public SQLWarning getWarnings() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //  throw new java.lang.UnsupportedOperationException("Method getWarnings() not yet implemented.");
    return aCon.getWarnings();
  }  public void clearWarnings() throws SQLException {
    /**@todo Implement this java.sql.Connection method*/
    //throw new java.lang.UnsupportedOperationException("Method clearWarnings() not yet implemented.");
    aCon.clearWarnings();
  }

解决方案 »

  1.   

    public Statement createStatement(int resultSetType, int resultSetConcurrency) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method createStatement() not yet implemented.");
        return aCon.createStatement(resultSetType, resultSetConcurrency);
      }  public PreparedStatement prepareStatement(String sql, int resultSetType,
                                                int resultSetConcurrency) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method prepareStatement() not yet implemented.");
        return aCon.prepareStatement(sql, resultSetType, resultSetConcurrency);
      }  public CallableStatement prepareCall(String sql, int resultSetType,
                                           int resultSetConcurrency) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method prepareCall() not yet implemented.");
        return aCon.prepareCall(sql, resultSetType, resultSetConcurrency);
      }  public Map getTypeMap() throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method getTypeMap() not yet implemented.");
        return aCon.getTypeMap();
      }  public void setTypeMap(Map map) throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method setTypeMap() not yet implemented.");
        aCon.setTypeMap(map);
      }  public void setHoldability(int holdability) throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method setHoldability() not yet implemented.");
        aCon.setHoldability(holdability);
      }  public int getHoldability() throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method getHoldability() not yet implemented.");
        return aCon.getHoldability();
      }  public Savepoint setSavepoint() throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method setSavepoint() not yet implemented.");
        return setSavepoint();
      }  public Savepoint setSavepoint(String name) throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method setSavepoint() not yet implemented.");
        return setSavepoint(name);
      }  public void rollback(Savepoint savepoint) throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method rollback() not yet implemented.");
        aCon.rollback(savepoint);
      }  public void releaseSavepoint(Savepoint savepoint) throws SQLException {
        /**@todo Implement this java.sql.Connection method*/
        // throw new java.lang.UnsupportedOperationException("Method releaseSavepoint() not yet implemented.");
        aCon.releaseSavepoint(savepoint);
      }  public Statement createStatement(int resultSetType, int resultSetConcurrency,
                                       int resultSetHoldability) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method createStatement() not yet implemented.");
        return aCon.createStatement(resultSetType, resultSetConcurrency,
                                    resultSetHoldability);
      }  public PreparedStatement prepareStatement(String sql, int resultSetType,
                                                int resultSetConcurrency,
                                                int resultSetHoldability) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //  throw new java.lang.UnsupportedOperationException("Method prepareStatement() not yet implemented.");
        return aCon.prepareStatement(sql, resultSetType, resultSetConcurrency,
                                     resultSetHoldability);
      }  public CallableStatement prepareCall(String sql, int resultSetType,
                                           int resultSetConcurrency,
                                           int resultSetHoldability) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method prepareCall() not yet implemented.");
        return aCon.prepareCall(sql, resultSetType, resultSetConcurrency,
                                resultSetHoldability);
      }  public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method prepareStatement() not yet implemented.");
        return aCon.prepareStatement(sql, autoGeneratedKeys);
      }  public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //  throw new java.lang.UnsupportedOperationException("Method prepareStatement() not yet implemented.");
        return aCon.prepareStatement(sql, columnIndexes);
      }  public PreparedStatement prepareStatement(String sql, String[] columnNames) throws
          SQLException {
        /**@todo Implement this java.sql.Connection method*/
        //throw new java.lang.UnsupportedOperationException("Method prepareStatement() not yet implemented.");
        return aCon.prepareStatement(sql, columnNames);
      }  public void closeConnection() throws SQLException {
        if (onClose != null) {
          onClose.Action(this);
        }
        aCon.close();  }  public boolean isUsed() {
        return inUse;  }  public void use() {
        inUse = true;
      }  public void setOnClose(OnConnectionClose Action) {
        onClose = Action;  }}
    ==========================================================================
    主要做法就是生成一个连接warp,每次取回的连接不是当前Drivers的实例,而是一个包装类PoolConnection的实例,PoolConnection的包装是为了调度.但是对于PoolConnection实例的调用将被传递到Driver的Connection实例:)
      

  2.   

    Thanks
    等我有空了看看
    顺祝楼主中秋快乐
    楼下的么……就请我吃月饼吧
    :)
      

  3.   

    DBConnectionPool 中的getConnection() 好像有点问题:=============================
        for (int i = 0; i < pConnectionVector.size(); i++) {
          Object oCon = pConnectionVector.elementAt(i);
          if (oCon instanceof PoolConnection) {
            PoolConnection aCon = (PoolConnection) oCon;
            if (!aCon.isUsed()) {
              pConnection = aCon;
            }      }    }
    ====================================
    这一段中当取到一个后应该立刻break吧。另提一点建议:
    pool最好不要用static方式,使用对象实例的方式(动态方法)实现更好些,适用的场合更多。即使目前不需要也可以使用单子的方式做,以后开放了对调用者代码的影响小些。另,如果想做得更宽泛,先定义一个ConnectionPool的接口,允许提供不同机制的实现,由一个工厂(或抽象工厂)实现ConnectionPool实例产生逻辑。
    synchronized public static Connection getConnection() throws SQLException {
        PoolConnection pConnection = null;
        // int aCount=pConnectionVector.size();    if (pConnection == null) {
          pConnection = getNewConnection();
          pConnectionVector.add(pConnection);
        }
        return pConnection;  }