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

📄 dbmanager.java

📁 网上商店
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        {
            freeConnections = new Vector();
            monitConnections = new Vector();
            //启动监视线程
            monThread = new MonitThread();
            name = s;
            URL = s1;
            user = s2;
            password = s3;
            maxConn = i;
            monThread.start();
        }
    }


    private static DBManager instance = null;
    private static int clients = 0;
    private static int DBConnections = 0;
    public static String FirstDriverName = "";
    private Vector drivers = null;
    private PrintWriter log = null;
    private Hashtable pools = null;

    public static synchronized DBManager getInstance()
    {
        if(instance == null)
        {
            instance = new DBManager();
            System.out.println("Connection pool:  The DataBase Manager (Pool) Created OK!");
        }
        clients++;
        return instance;
    }

	//构造函数。
    /***************************************************************************
	 * 构造函数 *
	 **************************************************************************/
    private DBManager()
    {
        drivers = new Vector();
        pools = new Hashtable();
        init();
    }

	//释放连接
    /***************************************************************************
	 * 释放连接 *
	 **************************************************************************/
    public void freeConnection(String s, Connection connection)
    {
        DBConnectionPool dbconnectionpool = (DBConnectionPool)pools.get(s);
        if(dbconnectionpool != null)
            dbconnectionpool.freeConnection(connection);
    }

	//获取数据库连接
    /***************************************************************************
	 * 获取数据库连接 *
	 **************************************************************************/
    public Connection getConnection(String s)
    {
        DBConnectionPool dbconnectionpool = (DBConnectionPool)pools.get(s);
        if(dbconnectionpool != null)
            return dbconnectionpool.getConnection();
        else
            return null;
    }

	//获取数据库连接重载
    /***************************************************************************
	 * 获取数据库连接重载 *
	 **************************************************************************/
    public Connection getConnection(String s, long l)
    {
        DBConnectionPool dbconnectionpool = (DBConnectionPool)pools.get(s);
        if(dbconnectionpool != null)
            return dbconnectionpool.getConnection(l);
        else
            return null;
    }

	//释放连接池
    /***************************************************************************
	 * 释放连接池 *
	 **************************************************************************/
    public synchronized void release()
    {
        if(--clients != 0)
            return;
        DBConnectionPool dbconnectionpool;
        for(Enumeration enumeration = pools.elements(); enumeration.hasMoreElements(); dbconnectionpool.release())
            dbconnectionpool = (DBConnectionPool)enumeration.nextElement();

        for(Enumeration enumeration1 = drivers.elements(); enumeration1.hasMoreElements();)
        {
            Driver driver = (Driver)enumeration1.nextElement();
            try
            {
                DriverManager.deregisterDriver(driver);
                log("\u64A4\u9500JDBC\u9A71\u52A8\u7A0B\u5E8F " + driver.getClass().getName() + "\u7684\u6CE8\u518C");
            }
            catch(SQLException sqlexception)
            {
                log(sqlexception, "\u65E0\u6CD5\u64A4\u9500\u4E0B\u5217JDBC\u9A71\u52A8\u7A0B\u5E8F\u7684\u6CE8\u518C: " + driver.getClass().getName());
            }
        }

    }

	//创建连接池
    /***************************************************************************
	 * 创建连接池 *
	 **************************************************************************/
    private void createPools(Properties properties)
    {
        for(Enumeration enumeration = properties.propertyNames(); enumeration.hasMoreElements();)
        {
            String s = (String)enumeration.nextElement();
            if(s.endsWith(".url"))
            {
                String s1 = s.substring(0, s.lastIndexOf("."));
                String s2 = properties.getProperty(s1 + ".url");
                if(s2 == null)
                {
                    log("\u6CA1\u6709\u4E3A\u8FDE\u63A5\u6C60" + s1 + "\u6307\u5B9AURL");
                }
                else
                {
                    String s3 = properties.getProperty(s1 + ".user");
                    String s4 = properties.getProperty(s1 + ".password");
                    String s5 = properties.getProperty(s1 + ".maxconn", "0");
                    int i;
                    try
                    {
                        i = Integer.valueOf(s5).intValue();
                    }
                    catch(NumberFormatException numberformatexception)
                    {
                        log("\u9519\u8BEF\u7684\u6700\u5927\u8FDE\u63A5\u6570\u9650\u5236: " + s5 + " .\u8FDE\u63A5\u6C60: " + s1);
                        i = 0;
                    }
                    DBConnectionPool dbconnectionpool = new DBConnectionPool(s1, s2, s3, s4, i);
                    //在哈希表中建立s1到dbconnectionpool连接池的映射
                    pools.put(s1, dbconnectionpool);
                    log("\u6210\u529F\u521B\u5EFA\u8FDE\u63A5\u6C60" + s1);
                }
            }
        }

    }

	//初始化
    /***************************************************************************
	 * 初始化 *
	 **************************************************************************/
    private void init()
    {
    	//读入配置文件内容
        java.io.InputStream inputstream = getClass().getResourceAsStream("/db.properties");
        Properties properties = new Properties();
        try
        {
            properties.load(inputstream);
        }
        catch(Exception exception)
        {
            System.err.println("\u4E0D\u80FD\u8BFB\u53D6\u5C5E\u6027\u6587\u4EF6. \u8BF7\u786E\u4FDDdb.properties\u5728CLASSPATH\u6307\u5B9A\u7684\u8DEF\u5F84\u4E2D");
            return;
        }
        String s = properties.getProperty("logfile", "DBManager.log");
        try
        {
            log = new PrintWriter(new FileWriter(s, true), true);
        }
        catch(IOException ioexception)
        {
            System.err.println("\u65E0\u6CD5\u6253\u5F00\u65E5\u5FD7\u6587\u4EF6: " + s);
            log = new PrintWriter(System.err);
        }
        //加载JDBC驱动
        loadDrivers(properties);
        //创建连接池
        createPools(properties);
    }

	//加载JDBC驱动
    /***************************************************************************
	 * 加载JDBC驱动 *
	 **************************************************************************/
    private void loadDrivers(Properties properties)
    {
    	//获取配置文件中驱动配置信息
        String s = properties.getProperty("drivers");
        //解析各个驱动名称
        for(StringTokenizer stringtokenizer = new StringTokenizer(s); stringtokenizer.hasMoreElements();)
        {
            String s1 = stringtokenizer.nextToken().trim();
            try
            {
            	//加载该驱动,并注册它
                Driver driver = (Driver)Class.forName(s1).newInstance();
                DriverManager.registerDriver(driver);
                drivers.addElement(driver);
                if(FirstDriverName.length() <= 1)
                    FirstDriverName = s1;
                log("\u6210\u529F\u6CE8\u518CJDBC\u9A71\u52A8\u7A0B\u5E8F" + s1);
            }
            catch(Exception exception)
            {
                log("\u65E0\u6CD5\u6CE8\u518CJDBC\u9A71\u52A8\u7A0B\u5E8F: " + s1 + ", \u9519\u8BEF: " + exception);
            }
        }

    }

    private void log(String s)
    {
    }

    private void log(Throwable throwable, String s)
    {
        log.println(new Date() + ": " + s);
        throwable.printStackTrace(log);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -