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

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

?? poolmanager.java

?? 該壓縮文件包含有多個連接池管理包
?? JAVA
字號:

/**
 * Title:
 * Description:
 * Copyright:    Copyright (c) 2001
 * Company:      CSU
 * @author       chenlong
 * @version 1.0
 */



import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.Vector;
/**
 *  	\u52A0\u8F7D\u548C\u6CE8\u518C\u6240\u6709JDBC\u9A71\u52A8\u7A0B\u5E8F
 *      \u6839\u636E\u4E00\u4E2A\u7279\u6027\u6587\u4EF6\u4E2D\u5B9A\u4E49\u7684\u7279\u6027\uFF0C\u521B\u5EFAConnectionPool\u5BF9\u8C61
 *      \u5C06\u8FDE\u63A5\u6C60\u540D\u79F0\u6620\u5C04\u5230ConnectionPool\u5BF9\u8C61\u4E0A
 *      \u5C06\u5BA2\u6237\u8BF7\u6C42\u4F20\u9012\u5230\u4E00\u4E2A\u540D\u79F0\u4E3AConnectionPool\u7684\u7279\u5B9A\u5BF9\u8C61
 *	\u8DDF\u8E2A\u8FDE\u63A5\u6C60\u4E2D\u7684\u5BA2\u6237\uFF0C\u5F53\u6700\u540E\u4E00\u4E2A\u5BA2\u6237\u5B8C\u6210\u5DE5\u4F5C\u65F6\u5173\u95ED\u8FDE\u63A5\u6C60
 *
 * PoolManager\u80FD\u591F\u83B7\u5F97\u6709\u5173\u4F7F\u7528JDBC\u9A71\u52A8\u7A0B\u5E8F\u7684\u4FE1\u606F\uFF0C
 * \u540C\u65F6\u4E5F\u53EF\u4EE5\u83B7\u5F97\u4ECE\u540D\u79F0\u4E3Adb.properties\u7279\u6027\u6587\u4EF6\u4E2D\u521B\u5EFA\u8FDE\u63A5\u6C60\uFF0C\u8BE5\u7279\u6027\u6587\u4EF6\u5FC5\u987B\u4E3A\u670D\u52A1\u5668\u653E\u7F6E\u5728CLASSPATH\u4E2D\u3002
 */

public class PoolManager
{

   static private PoolManager instance;
   static private int clients;

   private LogWriter logWriter;
   private PrintWriter pw;

   private Vector drivers = new Vector();
   private Hashtable pools = new Hashtable();

   private PoolManager()
   {
      init();
   }

/**
 *\u5F97\u5230PoolManager\u7684\u552F\u4E00\u5B9E\u4F8B
 */

   static synchronized public PoolManager getInstance()
   {
      if (instance == null)
      {
         instance = new PoolManager();
      }
      clients++;
      return instance;
   }

   private void init()
   {
      // Log to System.err until we have read the logfile property
      pw = new PrintWriter(System.err, true);
      logWriter = new LogWriter("PoolManager", LogWriter.INFO, pw);
      InputStream is = getClass().getResourceAsStream("db.properties");
      Properties dbProps = new Properties();
      try
      {
         dbProps.load(is);
      }
      catch (Exception e)
      {
         logWriter.log("Can't read the properties file. " +
            "Make sure db.properties is in the CLASSPATH",
            LogWriter.ERROR);
         return;
      }
      String logFile = dbProps.getProperty("logfile");
      if (logFile != null)
      {
         try
         {
            pw = new PrintWriter(new FileWriter(logFile, true), true);
            logWriter.setPrintWriter(pw);
         }
         catch (IOException e)
         {
            logWriter.log("Can't open the log file: " + logFile +
               ". Using System.err instead", LogWriter.ERROR);
         }
      }
      loadDrivers(dbProps);
      createPools(dbProps);
   }
/**
 * \u4ECEdb.properties\u4E2D\u5F97\u5230\u5404\u79CD\u53C2\u6570
 * \u7136\u540E\u521B\u5EFA\u8FDE\u63A5\u6C60
 */

   private void loadDrivers(Properties props)
   {
      String driverClasses = props.getProperty("drivers");
      StringTokenizer st = new StringTokenizer(driverClasses);
      while (st.hasMoreElements())
      {
         String driverClassName = st.nextToken().trim();
         try
         {
            Driver driver = (Driver)
               Class.forName(driverClassName).newInstance();
            DriverManager.registerDriver(driver);
            drivers.addElement(driver);
            logWriter.log("Registered JDBC driver " + driverClassName,
               LogWriter.INFO);
         }
         catch (Exception e)
         {
            logWriter.log(e, "Can't register JDBC driver: " +
               driverClassName, LogWriter.ERROR);
         }
      }
   }
/**
 * \u521B\u5EFA\u8FDE\u63A5\u6C60
 */

   private void createPools(Properties props)
   {
      Enumeration propNames = props.propertyNames();
      while (propNames.hasMoreElements())
      {
         String name = (String) propNames.nextElement();
         if (name.endsWith(".url"))
         {
            String poolName = name.substring(0, name.lastIndexOf("."));
            String url = props.getProperty(poolName + ".url");
            if (url == null)
            {
               logWriter.log("No URL specified for " + poolName,
                  LogWriter.ERROR);
               continue;
            }

            String user = props.getProperty(poolName + ".user");
            String password = props.getProperty(poolName + ".password");

            String maxConns = props.getProperty(poolName +
               ".maxconns", "0");
            int max;
            try
            {
               max = Integer.valueOf(maxConns).intValue();
            }
            catch (NumberFormatException e)
            {
               logWriter.log("Invalid maxconns value " + maxConns +
                               " for " + poolName, LogWriter.ERROR);
               max = 0;
            }

            String initConns = props.getProperty(poolName +
                              ".initconns", "0");
            int init;
            try
            {
               init = Integer.valueOf(initConns).intValue();
            }
            catch (NumberFormatException e)
            {
               logWriter.log("Invalid initconns value " + initConns +
                             " for " + poolName, LogWriter.ERROR);
               init = 0;
            }

            String loginTimeOut = props.getProperty(poolName +
               ".logintimeout", "5");
            int timeOut;
            try
            {
               timeOut = Integer.valueOf(loginTimeOut).intValue();
            }
            catch (NumberFormatException e)
            {
               logWriter.log("Invalid logintimeout value " + loginTimeOut +
                            " for " + poolName, LogWriter.ERROR);
               timeOut = 5;
            }

            String logLevelProp = props.getProperty(poolName +
                           ".loglevel", String.valueOf(LogWriter.ERROR));
            int logLevel = LogWriter.INFO;
            if (logLevelProp.equalsIgnoreCase("none"))
            {
               logLevel = LogWriter.NONE;
            }
            else if (logLevelProp.equalsIgnoreCase("error"))
            {
               logLevel = LogWriter.ERROR;
            }
            else if (logLevelProp.equalsIgnoreCase("debug"))
            {
               logLevel = LogWriter.DEBUG;
            }

            ConnectionPool pool =
                           new ConnectionPool(poolName, url, user, password,
                                            max, init, timeOut, pw, logLevel);
            pools.put(poolName, pool);
         }
      }
   }
/**
 * \u901A\u8FC7\u8BBF\u95EEConnectionPool\u5F97\u5230\u8FDE\u63A5
 */

   public Connection getConnection(String name)
   {
      Connection conn = null;
      ConnectionPool pool = (ConnectionPool) pools.get(name);
      if (pool != null)
      {
         try
         {
            conn = pool.getConnection();
         }
         catch (SQLException e)
         {
            e.printStackTrace();
            logWriter.log(e, "Exception getting connection from " +
               name, LogWriter.ERROR);
         }
      }
      return conn;
   }
/**
 * \u91CA\u653E\u8FDE\u63A5
 */

   public void freeConnection(String name, Connection con)
   {
      ConnectionPool pool = (ConnectionPool) pools.get(name);
      if (pool != null)
      {
         pool.freeConnection(con);
      }
   }
/**
 * \u8C03\u7528ConnectionPool
 * \u91CA\u653E\u6240\u6709\u8FDE\u63A5
 */

   public synchronized void release()
   {
      // Wait until called by the last client
      if (--clients != 0)
      {
         return;
      }

      Enumeration allPools = pools.elements();
      while (allPools.hasMoreElements())
      {
         ConnectionPool pool = (ConnectionPool)allPools.nextElement();
         pool.release();
      }

      Enumeration allDrivers = drivers.elements();
      while (allDrivers.hasMoreElements())
      {
         Driver driver = (Driver) allDrivers.nextElement();
         try
         {
            DriverManager.deregisterDriver(driver);
            logWriter.log("Deregistered JDBC driver " +
                          driver.getClass().getName(), LogWriter.INFO);
         }
         catch (SQLException e)
         {
            logWriter.log(e, "Couldn't deregister JDBC driver: " +
                             driver.getClass().getName(), LogWriter.ERROR);
         }
      }
   }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品欧美日韩精品| 在线观看一区二区视频| 久久久久久亚洲综合影院红桃| 日韩国产欧美在线观看| 亚洲综合图片区| 欧美三级中文字幕在线观看| 日韩激情视频在线观看| 欧美一区二区三区啪啪| 国产成人精品三级麻豆| 亚洲免费毛片网站| 欧美精品欧美精品系列| 国产一区二区三区香蕉| 成人免费在线视频观看| 欧美三区在线观看| 欧美久久久久久久久中文字幕| 青青草视频一区| 日本一区二区三级电影在线观看| 91一区二区在线| 美女诱惑一区二区| 国产精品狼人久久影院观看方式| 欧美三级日韩三级国产三级| 久久精品免费观看| 亚洲欧洲日本在线| 日韩一区二区在线观看| 久久先锋资源网| 91麻豆国产自产在线观看| 视频一区二区国产| 中文乱码免费一区二区| 欧美日韩专区在线| 成人性生交大片免费看在线播放| 亚洲妇熟xx妇色黄| 国产欧美一区二区三区网站| 在线观看网站黄不卡| 国产酒店精品激情| 99久久99久久免费精品蜜臀| 男男成人高潮片免费网站| 成人免费一区二区三区在线观看| 日韩三级av在线播放| 99国产精品99久久久久久| 韩日欧美一区二区三区| 亚洲国产视频网站| 亚洲视频综合在线| 久久先锋资源网| 337p亚洲精品色噜噜| 久久日韩粉嫩一区二区三区| 欧美无砖专区一中文字| 国产电影精品久久禁18| 强制捆绑调教一区二区| 亚洲黄色性网站| 亚洲国产精品ⅴa在线观看| 欧美一区二区三区小说| 日本韩国欧美三级| av不卡在线观看| 韩国女主播成人在线观看| 石原莉奈一区二区三区在线观看| 国产在线精品国自产拍免费| 日本sm残虐另类| 亚洲成av人**亚洲成av**| 亚洲男女毛片无遮挡| 国产精品午夜免费| 久久久久国产一区二区三区四区| 7777精品伊人久久久大香线蕉的| 91成人在线观看喷潮| 99国产麻豆精品| 丁香天五香天堂综合| 欧美日韩成人综合天天影院| 91免费看`日韩一区二区| 成人小视频免费观看| 成人永久免费视频| 丰满放荡岳乱妇91ww| 成人涩涩免费视频| 成人av免费在线| 成人国产一区二区三区精品| 成人免费高清在线| 成人伦理片在线| 99精品在线免费| 国产精品无遮挡| 国产精品三级电影| 欧美激情中文字幕| 中文字幕精品一区二区精品绿巨人 | 国产清纯在线一区二区www| 91精品在线麻豆| 9191久久久久久久久久久| 欧美日韩不卡一区| 一区二区三区在线观看国产| 中文字幕亚洲电影| 亚洲精选视频免费看| 亚洲尤物视频在线| 日韩高清中文字幕一区| 国内精品在线播放| 成人黄色网址在线观看| 一本到高清视频免费精品| 在线视频国产一区| 日韩西西人体444www| 久久精品视频免费观看| 国产成人8x视频一区二区| 成人黄色777网| 欧美午夜片在线观看| 日韩美女在线视频| 国产精品无码永久免费888| 亚洲日本一区二区三区| 亚洲影院久久精品| 青娱乐精品视频| 丁香亚洲综合激情啪啪综合| 欧美在线影院一区二区| 日韩一区二区中文字幕| 欧美激情资源网| 成人aa视频在线观看| 欧美日韩激情一区二区| 久久久久久一二三区| 亚洲综合图片区| 久久se精品一区二区| 99国产精品久久| 精品国产在天天线2019| 中文字幕一区免费在线观看| 午夜久久电影网| 国产成人自拍网| 制服丝袜亚洲网站| 韩国av一区二区| 色婷婷一区二区| 久久精品人人做| 舔着乳尖日韩一区| 成人18视频日本| 欧美大片在线观看一区| 一区二区三区高清| 国产精品18久久久久久vr| 欧洲一区二区av| 久久久.com| 奇米影视在线99精品| 91一区一区三区| 青青草伊人久久| 91久久精品一区二区三| 国产午夜精品一区二区三区嫩草| 一区二区三区在线免费播放| 国产一区二三区| 欧美福利一区二区| 亚洲免费在线视频| 成人免费福利片| 久久亚区不卡日本| 蜜臀av性久久久久av蜜臀妖精| 91麻豆文化传媒在线观看| 久久精品视频免费| 精品一区二区免费视频| 亚洲欧洲另类国产综合| 国产专区综合网| 欧美一区二区在线看| 亚洲综合免费观看高清完整版| 成人精品免费视频| 久久久久久久久久久久久夜| 蜜桃视频在线观看一区| 欧美欧美欧美欧美首页| 一级日本不卡的影视| 99久久久久免费精品国产| 日本一区二区成人| 国产精品白丝jk黑袜喷水| 日韩精品国产欧美| 欧美日韩中文国产| 洋洋成人永久网站入口| 99精品久久免费看蜜臀剧情介绍| 久久久综合九色合综国产精品| 麻豆精品视频在线观看免费| 91精品国产一区二区人妖| 视频一区二区不卡| 91精品久久久久久久99蜜桃 | 亚洲国产一区二区在线播放| 91视频你懂的| 亚洲你懂的在线视频| 亚洲国产精品ⅴa在线观看| 国产成人午夜视频| 国产女同互慰高潮91漫画| 国产69精品久久99不卡| 国产精品网站在线播放| 91小视频在线免费看| 亚洲与欧洲av电影| 欧美日本国产视频| 久久精品国产99国产| 久久综合久久综合亚洲| 高清av一区二区| 日韩码欧中文字| 色先锋久久av资源部| 99久久精品国产毛片| 一区二区三区在线视频免费观看 | 欧美亚洲综合一区| 亚洲午夜精品在线| 日韩一区二区电影| 国产精品影视在线| 综合激情成人伊人| 欧美色图天堂网| 理论电影国产精品| 久久青草欧美一区二区三区| www.亚洲精品| 亚洲制服丝袜av| 精品久久五月天| 精品国产sm最大网站免费看| 国产乱码精品一区二区三区忘忧草 | 日韩福利电影在线| 久久免费的精品国产v∧| 99精品偷自拍| 免费观看日韩电影| 国产精品美女久久久久av爽李琼|