好象一般介绍java书上都有这个~~

解决方案 »

  1.   

    web server也可以设定连接池的。
      

  2.   

    package com.dickensi.bean.db;/**
     * <p>Title: Dickensi's home Page</p>
     * <p>Description: You are welcome</p>
     * <p>Copyright: Copyright (c) 2002</p>
     * <p>Company: NEC PDAE</p>
     * @author Dickensi
     * @version 1.0
     *///import oracle.jdbc.driver.OracleDriver;
    import java.sql.*;
    import java.util.*;
    import com.dickensi.env.EnvirementProvider;
    import com.dickensi.util.*;public class DBConnectionPool {  private static String driver = EnvirementProvider.getProperty("db.driver");
      private static String url = EnvirementProvider.getProperty("db.url");
      private static Vector pool = new Vector();
      private static String user = EnvirementProvider.getProperty("db.user");
      private static String password = EnvirementProvider.getProperty("db.password");
      private static int MAXCON = Integer.valueOf(EnvirementProvider.getProperty("db.poolnumber")).intValue();  static {
        try{
            Class.forName(driver);
            LogWriter.trace("JDBC Driber loaded: " + driver);
        }catch(Exception e){
            LogWriter.trace("JDBC Driver load failure!");
        }
        newConnection();
      }
      public DBConnectionPool() {
      }  static private boolean newConnection(){
        Connection con = null;
        while( pool.size()< MAXCON )
        {
            try{
               con = DriverManager.getConnection(url,user,password);
              }
            catch(Exception e){System.out.println("Database connect failure!");}
            pool.add(con);
            LogWriter.trace("Create a connection["+(pool.size()-1)+"]"+con.toString());
          }
        return false;
      }  static public Connection getConnection(){
        if(pool.size() <= 0)
        {
          while(newConnection());
        }
        Connection con = (Connection) pool.firstElement();
        pool.remove(0);
        return con;
      }  static public void realseConnection(Connection con){
          try{
             if(pool.size()<10){
                pool.add(con);
              }
             else{con.close();}
             con = null;
          }
          catch(Exception e){}
      }  static private void realeasePool(){
        Connection con = null;
        for(int i=0;i<pool.size();i++)
        {
          con = (Connection)pool.get(i);
          try{
            con.close();
          }
          catch(Exception e){}
        }
        pool.clear();
      }  static public void getPoolInfo(){
        for(int i =0;i<pool.size();i++)
        {
           System.out.println(""+i+pool.get(i).toString());
        }
      }  public static void main(String[] args) {
        DBConnectionPool.getPoolInfo();
        LogWriter.trace(String.valueOf(DBConnectionPool.MAXCON));
        Connection c = DBConnectionPool.getConnection();
        DBConnectionPool.getPoolInfo();
        DBConnectionPool.realseConnection(c);
        DBConnectionPool.getPoolInfo();
      }
    }你要给
    private static String driver = EnvirementProvider.getProperty("db.driver");
      private static String url = EnvirementProvider.getProperty("db.url");
      private static Vector pool = new Vector();
      private static String user = EnvirementProvider.getProperty("db.user");
      private static String password = EnvirementProvider.getProperty("db.password");
      private static int MAXCON = Integer.valueOf(EnvirementProvider.getProperty("db.poolnumber")).intValue();傅上具体的值!
      

  3.   

    还有一些东西要去掉!
    比如LogWriter.trace();...
    这里用了不少我开发的其他包!
      

  4.   

    建议你看看Apache的Common中的子项目Pool
    jakarta.apache.org
      

  5.   

    关键还是怎样自动维护你的连接,一般采用一个线程来维护。我自己写的就是,而且使用完Connection后,直接cn.close()关闭,而不像其他的需要放回连接池。