亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connectionpool.java

?? 該壓縮文件包含有多個連接池管理包
?? JAVA
字號:
/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2001
 * Company:
 * @author chenlong
 * @version 1.0
 */

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Enumeration;
import java.util.Vector;

/**
 *\uF06C	\u4ECE\u6570\u636E\u5E93\u6C60\u4E2D\u83B7\u5F97\u4E00\u4E2A\u6253\u5F00\u7684\u8FDE\u63A5
 * \uF06C	\u8FD4\u56DE\u4E00\u4E2A\u8FDE\u63A5\u5230\u6570\u636E\u5E93\u6C60
 * \uF06C	\u5728\u7CFB\u7EDF\u8FD0\u884C\u505C\u6B62\u65F6\uFF0C\u91CA\u653E\u6240\u6709\u7684\u8D44\u6E90\u5E76\u5173\u95ED\u6240\u6709\u7684\u8FDE\u63A5
 */

public class ConnectionPool
{

  private String name;
  private String URL;
  private String user;
  private String password;
  /**
   * \u6700\u5927\u8FDE\u7ED3\u6570
    */

   private int maxConns;
   /**
    * \u7B49\u5F85\u65F6\u95F4
    */

   private int timeOut;
   private LogWriter logWriter;

   /**
    * \u88AB\u53D6\u51FA\u7684\u8FDE\u63A5\u7684\u6570\u76EE
    */
   private int checkedOut;
   /**
    * \u53EF\u4EE5\u4F7F\u7528\u7684\u8FDE\u63A5\u653E\u5728\u6B64\u5411\u91CF\u4E2D
    */
   private Vector freeConnections = new Vector();

   public ConnectionPool(String name, String URL, String user,
      String password, int maxConns, int initConns, int timeOut,
      PrintWriter pw, int logLevel)
      {

      this.name = name;
      this.URL = URL;
      this.user = user;
      this.password = password;
      this.maxConns = maxConns;
      this.timeOut = timeOut > 0 ? timeOut : 5;

      logWriter = new LogWriter(name, logLevel, pw);
      initPool(initConns);

      logWriter.log("New pool created", LogWriter.INFO);
      String lf = System.getProperty("line.separator");
      logWriter.log(lf +
                    " url=" + URL + lf +
                    " user=" + user + lf +
                    " password=" + password + lf +
                    " initconns=" + initConns + lf +
                    " maxconns=" + maxConns + lf +
                    " logintimeout=" + this.timeOut, LogWriter.DEBUG);
      logWriter.log(getStats(), LogWriter.DEBUG);
   }
/**
 * \u521D\u59CB\u5316\u8FDE\u63A5\u6C60
 */

   private void initPool(int initConns)
   {
      for (int i = 0; i < initConns; i++)
      {
         try
         {
            Connection pc = newConnection();
            freeConnections.addElement(pc);
         }
         catch (SQLException e)
         { e.printStackTrace();}
      }
   }
   /**
    * Get a pooled Connection from the cache or a new one.
    * Wait if all are checked out and the max limit has
    * been reached.
 */

   public Connection getConnection() throws SQLException
   {
      logWriter.log("Request for connection received", LogWriter.DEBUG);
      try
      {
         return getConnection(timeOut * 1000);
      }
       catch (SQLException e)
      {
         logWriter.log(e, "Exception getting connection",
                       LogWriter.ERROR);
         throw e;
      }
   }
/**
 * Get a pooled Connection from the cache or a new one.
 * Wait if all are checked out and the max limit has
 * been reached.
 * @param timeout \u6700\u5927\u7B49\u5F85\u65F6\u95F4
 */

   private synchronized Connection getConnection(long timeout)
                      throws SQLException
   {


      long startTime = System.currentTimeMillis();
      long remaining = timeout;
      Connection conn = null;
      while ((conn = getPooledConnection()) == null)
      {
         try
         {
            logWriter.log("Waiting for connection. Timeout=" + remaining,
                          LogWriter.DEBUG);
            wait(remaining);
         }
         catch (InterruptedException e)
         {e.printStackTrace(); }
         remaining = timeout - (System.currentTimeMillis() - startTime);
         if (remaining <= 0)
         {
            // Timeout has expired
            logWriter.log("Time-out while waiting for connection",
                          LogWriter.DEBUG);
            throw new SQLException("getConnection() timed-out");
         }
      }

      // Check if the Connection is still OK
      if (!isConnectionOK(conn))
      {
         // It was bad. Try again with the remaining timeout
         logWriter.log("Removed selected bad connection from pool",
                       LogWriter.ERROR);
         return getConnection(remaining);
      }
      checkedOut++;
      logWriter.log("Delivered connection from pool", LogWriter.INFO);
      logWriter.log(getStats(), LogWriter.DEBUG);
      return conn;
   }

   private boolean isConnectionOK(Connection conn)
   {
      Statement testStmt = null;
      try
      {
         if (!conn.isClosed())
         {
            // Try to createStatement to see if it's really alive
            testStmt = conn.createStatement();
            testStmt.close();
         }
         else
         {
            return false;
         }
      }
      catch (SQLException e)
      {
         if (testStmt != null)
         {
            try
            {
               testStmt.close();
            }
            catch (SQLException se)
            { e.printStackTrace(); }
         }
         logWriter.log(e, "Pooled Connection was not okay",
                           LogWriter.ERROR);
         return false;
      }
      return true;
   }
/**
 * Get a pooled Connection from the cache
 */

   private Connection getPooledConnection() throws SQLException
   {
      Connection conn = null;
      if (freeConnections.size() > 0)
      {
         // Pick the first Connection in the Vector
         // to get round-robin usage
         conn = (Connection) freeConnections.firstElement();
         freeConnections.removeElementAt(0);
      }
      else if (maxConns == 0 || checkedOut < maxConns)
      {
         conn = newConnection();
      }
      return conn;
   }
/**
 * Create a new pooled Connection
 */

   private Connection newConnection() throws SQLException
   {
      Connection conn = null;
      if (user == null)
      {
         conn = DriverManager.getConnection(URL);
      }
      else
      {
         conn = DriverManager.getConnection(URL, user, password);
      }
      logWriter.log("Opened a new connection", LogWriter.INFO);
      return conn;
   }
/**
 * free a connection to pool
 */
   public synchronized void freeConnection(Connection conn)
   {
     // Put the connection at the end of the Vector
     if (this.isConnectionOK(conn))
     {
       if(!freeConnections.contains(conn))
       {
         freeConnections.addElement(conn);
         checkedOut--;
         notifyAll();
         logWriter.log("Returned connection to pool", LogWriter.INFO);
         logWriter.log(getStats(), LogWriter.DEBUG);
       }
     }else
     {
       System.out.println("You Check in a Wrong Connection!!!");
     }
   }
   /**
    * release all connection from pool
 */
   public synchronized void release()
   {
      Enumeration allConnections = freeConnections.elements();
      while (allConnections.hasMoreElements())
      {
         Connection con = (Connection) allConnections.nextElement();
         try
         {
            con.close();
            logWriter.log("Closed connection", LogWriter.INFO);
         }
         catch (SQLException e)
         {
         	e.printStackTrace();
            logWriter.log(e, "Couldn't close connection", LogWriter.ERROR);
         }
      }
      freeConnections.removeAllElements();
   }
/**
 * get the statement of the connection pool
 */

   private String getStats() {
      return "Total connections: " +
         (freeConnections.size() + checkedOut) +
         " Available: " + freeConnections.size() +
         " Checked-out: " + checkedOut;
   }


}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产自产拍在线| 日韩精品一区二区三区视频 | 麻豆国产精品一区二区三区 | 亚洲一卡二卡三卡四卡五卡| 国产精品久久久久7777按摩| 久久久亚洲高清| 国产亚洲欧洲一区高清在线观看| 欧美一卡2卡三卡4卡5免费| 欧美日韩高清不卡| 欧美日韩成人一区| 欧美成人精品3d动漫h| 欧美大尺度电影在线| 久久午夜国产精品| 国产日韩高清在线| 亚洲免费av高清| 亚洲线精品一区二区三区八戒| 亚洲午夜精品17c| 热久久久久久久| 久久97超碰色| 成人黄色777网| 色综合久久久久综合体| 色诱视频网站一区| 911精品国产一区二区在线| 日韩欧美精品三级| 亚洲国产精品成人久久综合一区| 日韩美女视频一区二区| 亚洲午夜激情av| 精品无人区卡一卡二卡三乱码免费卡| 国产精品99久久久久久似苏梦涵| 99精品在线观看视频| 欧美日韩夫妻久久| 国产精品蜜臀av| 性做久久久久久| 国产99久久久国产精品| 欧美亚一区二区| 26uuu色噜噜精品一区二区| 国产精品成人免费在线| 亚洲.国产.中文慕字在线| 韩国av一区二区三区在线观看| 色婷婷av一区二区三区大白胸| 7777精品伊人久久久大香线蕉| 久久精品人人做人人爽人人| 亚洲男同性恋视频| 国内精品久久久久影院色| 99精品国产91久久久久久| 91精品欧美福利在线观看| 国产欧美日韩不卡| 中文字幕中文字幕在线一区 | 亚洲在线视频一区| 国产在线播放一区三区四| 91啪在线观看| 久久久高清一区二区三区| 无码av免费一区二区三区试看| 国产成人欧美日韩在线电影| 欧美一区二区在线播放| 亚洲日本在线天堂| 国产成人av电影在线观看| 欧美一区二区私人影院日本| 国产精品白丝在线| 国产91在线|亚洲| 欧美一区二区三区免费视频| 综合激情成人伊人| 国产91丝袜在线播放0| 精品日韩在线一区| 日韩va亚洲va欧美va久久| 在线日韩一区二区| 亚洲视频资源在线| 波多野结衣亚洲一区| 国产日韩精品一区| 粉嫩aⅴ一区二区三区四区| 欧美成人三级在线| 免费人成网站在线观看欧美高清| 欧美色视频一区| 亚洲综合激情另类小说区| 99re成人精品视频| 亚洲男人天堂av| 成人午夜私人影院| 国产精品视频观看| eeuss鲁片一区二区三区在线观看| 久久视频一区二区| 国产一本一道久久香蕉| 久久久国产精华| 成人网男人的天堂| 亚洲欧美日韩人成在线播放| 色中色一区二区| 亚洲电影视频在线| 欧美一区二区三区视频在线| 日本sm残虐另类| 久久久久久久综合狠狠综合| 国产激情视频一区二区在线观看 | 亚洲男人的天堂一区二区| av在线不卡观看免费观看| 成人欧美一区二区三区视频网页 | 欧美精品三级日韩久久| 日本在线不卡视频一二三区| 日韩欧美成人激情| 国产美女精品人人做人人爽| 久久久91精品国产一区二区精品| 国产伦精品一区二区三区视频青涩| 久久综合久久综合九色| 成人动漫一区二区三区| 亚洲精品乱码久久久久久日本蜜臀| 欧美三级电影网| 国产一区二区在线观看免费| 国产精品区一区二区三| 欧美自拍偷拍一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久久99精品免费观看不卡| 成人av电影在线播放| 亚洲国产wwwccc36天堂| 日韩一区二区三区av| 丁香啪啪综合成人亚洲小说 | 精品国产成人在线影院| 高清不卡在线观看av| 亚洲444eee在线观看| 欧美高清在线视频| 欧亚洲嫩模精品一区三区| 国产一区久久久| 亚洲午夜私人影院| 久久精品亚洲乱码伦伦中文| 在线观看亚洲一区| 国产在线视视频有精品| 夜夜爽夜夜爽精品视频| 久久新电视剧免费观看| 欧美四级电影网| 粉嫩aⅴ一区二区三区四区| 热久久免费视频| 悠悠色在线精品| 国产精品视频yy9299一区| 欧美高清一级片在线| 99re免费视频精品全部| 国产盗摄精品一区二区三区在线| 一区二区三区自拍| 国产精品福利av| 国产无一区二区| 2020国产精品自拍| 日韩视频免费直播| 欧美日韩中字一区| 91同城在线观看| 成人激情图片网| 国产一区中文字幕| 国模少妇一区二区三区| 无码av免费一区二区三区试看| 亚洲欧美日韩人成在线播放| 国产精品久久久久久久久图文区| 精品久久久久久久人人人人传媒 | 中文字幕在线免费不卡| 久久久亚洲国产美女国产盗摄| 欧美一区二区在线不卡| 51午夜精品国产| 精品污污网站免费看| 99亚偷拍自图区亚洲| 成人免费高清在线| 成人黄色一级视频| 99久久免费国产| 一本色道a无线码一区v| 色8久久人人97超碰香蕉987| 99久久精品免费| 91玉足脚交白嫩脚丫在线播放| 成人av集中营| 欧美午夜精品理论片a级按摩| proumb性欧美在线观看| 91麻豆免费视频| 欧洲精品中文字幕| 91久久精品网| 欧美日韩高清在线播放| 日韩欧美国产wwwww| 国产日产欧美一区二区视频| 国产精品青草久久| 亚洲一区二区中文在线| 人人爽香蕉精品| 国产成人亚洲综合a∨猫咪| av在线一区二区| 欧美精品1区2区| 久久久电影一区二区三区| 亚洲日本va午夜在线电影| 亚洲国产精品久久一线不卡| 日韩电影在线观看网站| 国产美女一区二区| 色素色在线综合| 日韩欧美一级二级三级| 中文字幕在线一区二区三区| 一区二区日韩av| 狠狠色狠狠色合久久伊人| 99国产精品视频免费观看| 欧美日韩免费观看一区二区三区 | gogo大胆日本视频一区| 欧美性xxxxxxxx| 精品国产三级a在线观看| 中文字幕在线播放不卡一区| 偷拍与自拍一区| 国产高清在线精品| 欧美日韩国产综合一区二区三区| 精品久久久久久无| 亚洲自拍偷拍九九九| 成人亚洲精品久久久久软件| 欧美精品色综合| 亚洲免费观看高清完整版在线| 久国产精品韩国三级视频| 在线视频观看一区|