📄 poolmanager.java
字号:
package cncgw.smdb;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author * @version 1.0 */import java.sql.*;import java.io.*;import java.util.*;import cncgw.cncMain;/** * 创建一个数据连接池所需要的属性为: * poolname.url/poolname.user/poolname.password/poolname.maxconns/ * poolname.initconns/poolname.Clogintimeout/poolname.Cloglevel */public class PoolManager { static private PoolManager instance; static private int clients; public static String driver = ""; public static String url = ""; public static String user = ""; public static String password = ""; public static int initconn = 3; public static int maxconns = 6; public static int logintimeout = 10; private Vector drivers = new Vector(); private Hashtable pools = new Hashtable(); private PoolManager() { init(); } public static synchronized PoolManager getInstance() { if (instance == null) { instance = new PoolManager(); } clients++; return instance; } private void init() { Properties dbProps = new Properties(); String name = "cnc"; String driverClassName = driver; try { int init; try { init = initconn; } catch (NumberFormatException e) { cncMain.errorlog("Invalid initconns value " + initconn + " for " + name); init = 0; } int max; try { max = maxconns; } catch (NumberFormatException e) { cncMain.errorlog("Invalid maxconns value " + maxconns + " for " + name); max = 0; } int timeOut; try { timeOut = logintimeout; } catch (NumberFormatException e) { cncMain.errorlog("Invalid logintimeout value " + logintimeout + " for " + name); timeOut = 5; } // 填充数据连接属性 loadDriver(driverClassName); } catch (Exception e) { cncMain.errorlog("Can't read the properties of connection pool in config."); return; } addDBConnToPool(name,driverClassName,url,user,password,initconn,maxconns,logintimeout); } public void addDBConnToPool(String ConnName,String DriverClassName,String DBUrl,String DBUser, String DBPassword,int InitConns,int MaxConns,int LoginTimeOut) { loadDriver(DriverClassName); ConnectionPool pool = new ConnectionPool(ConnName, DBUrl, DBUser, DBPassword, MaxConns, InitConns, LoginTimeOut); pools.put(ConnName, pool); } private void loadDriver(String driverClassName) { try { Driver driver = (Driver) Class.forName(driverClassName).newInstance(); DriverManager.registerDriver(driver); drivers.addElement(driver); System.out.println("Registered JDBC driver " + driverClassName); } catch (Exception e) { System.err.println(e + "Can't register JDBC driver: " + driverClassName); } } public Connection getConnection(String name) { Connection conn = null; ConnectionPool pool = (ConnectionPool) pools.get(name); if (pool != null) { try { conn = pool.getConnection(); } catch (SQLException e) { System.err.println(e+ "Exception getting connection from " + name); } } return conn; } public void freeConnection(String name, Connection con) { ConnectionPool pool = (ConnectionPool) pools.get(name); if (pool != null) { pool.freeConnection(con); } } 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);// Clog.info("Deregistered JDBC driver " +// .error(e +"Couldn't deregister JDBC driver: " +// driver.getClass().getName());// } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -