⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 poolmanager.java

📁 cnc网通小灵通网关接口源码
💻 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 + -