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

📄 connectionpoolmanager.java

📁 一个关于商业的网站
💻 JAVA
字号:
package com.everstar.database;

import java.io.*;
import java.sql.*;
import java.util.*;

public class ConnectionPoolManager 
{
	final private static String	m_propsName	= "/props/db.properties";
	final private static String KEY_URL		= "url";
	final private static String KEY_DRIVER	= "driver";
	final private static String KEY_USER	= "username";
	final private static String KEY_PASSWD	= "password";
	final private static String KEY_MAXCONN	= "maxconn";

	// The only instance
	private static ConnectionPoolManager	m_instance;

	// The numbers of client that use the instance
	private static int			m_nClientNum	= 0;
	private static final String m_POOL_NAME		= "DefaultPool";

	static private	Hashtable	m_hashPools		= new Hashtable();
	static private	Vector		m_vectDrivers	= new Vector();

	Properties m_props = null;

	private	String		m_strDriver		= null;
	private	String		m_strURL		= null;
	private	String		m_strUser		= null;
	private	String		m_strPasswd		= null;
	private	int			m_iMaxConn		= 0;

	private void setProps()
	{
		if(m_props == null) return ;

		m_strDriver		= m_props.getProperty(KEY_DRIVER, "");
		m_strURL		= m_props.getProperty(KEY_URL, "");;
		m_strUser		= m_props.getProperty(KEY_USER, "");;
		m_strPasswd		= m_props.getProperty(KEY_PASSWD, "");;
		String max		= m_props.getProperty(KEY_MAXCONN,"10");
/*
m_props.list(System.out);
System.out.println("Dirver:" + m_strDriver);
System.out.println("URL:" + m_strURL);
System.out.println("User:" + m_strUser);
System.out.println("Password:" + m_strPasswd);
*/
		try
		{
			m_iMaxConn	= Integer.parseInt(max);
		}
		catch(NumberFormatException nfex)
		{
			m_iMaxConn = 10;
		}
	}

	static synchronized public ConnectionPoolManager getInstance()
	{
		if (m_instance == null)
		{
			m_instance = new ConnectionPoolManager();
		}
		
		m_nClientNum++;
		
		return m_instance;
	}

	private ConnectionPoolManager()
	{
		m_props = loadProps();
		setProps();
		init(m_POOL_NAME, m_strDriver, m_strURL, m_strUser, m_strPasswd, m_iMaxConn);
	}

	public void freeConnection(Connection con)
	{
		freeConnection(m_POOL_NAME, con);
	}
	
	public void freeConnection(String name, Connection con)
	{
		ConnectionPool pool = (ConnectionPool)m_hashPools.get(name);
		if (pool != null)
		{
			pool.freeConnection(con);
		}
	}

	public Connection getConnection()
	{
		return getConnection(m_POOL_NAME);
	}
	
	public Connection getConnection(String name)
	{
		ConnectionPool pool = (ConnectionPool) m_hashPools.get(name);
		if (pool != null) 
		{
			return pool.getConnection();
		}
		return null;
	}
	
	public Connection getConnection(String name, long time)
	{
		ConnectionPool pool = (ConnectionPool) m_hashPools.get(name);
		if (pool != null)
		{
			return pool.getConnection(time);
		}
		return null;
	}

	public synchronized void release()
	{
		if (--m_nClientNum != 0)
		{
			return;
		}
		
		Enumeration enumAllPools = m_hashPools.elements();
		while (enumAllPools.hasMoreElements())
		{
			ConnectionPool pool = (ConnectionPool)enumAllPools.nextElement();
			pool.release();
		}
		
		Enumeration enumAllDrivers = m_vectDrivers.elements();
		while (enumAllDrivers.hasMoreElements())
		{
			Driver strDriver = (Driver) enumAllDrivers.nextElement();
			try
			{
				DriverManager.deregisterDriver(strDriver);
			}
			catch (SQLException e) 
			{
			}
		}
	}

	private void init(String strPoolName, String strDriver, String strURL,
						String user, String passwd, int maxconn)
	{
		loadDriver(strDriver);
		createPools(strPoolName, strURL, user, passwd, maxconn);
	}

	private void loadDriver(String strDriver)
	{
		try
		{
			Driver drv = (Driver)Class.forName(strDriver).newInstance();
			DriverManager.registerDriver(drv);
			m_vectDrivers.addElement(drv);
		}
		catch (Exception e)
		{
		}
	}

	private void createPools(String strPoolName, String strURL, String user,
							String passwd, int maxconn)
	{
		ConnectionPool pool =	new ConnectionPool(strPoolName, strURL, user, passwd, maxconn);
		m_hashPools.put(strPoolName, pool);
	}

    private Properties loadProps()
    {
		Properties	prop	= new Properties();
		InputStream	in		= null;

		try
		{
			in = getClass().getResourceAsStream(m_propsName);
			prop.load(in);
		}
		catch (Exception e)
		{
			prop = null;
			System.out.println("Can not open the property file - " + m_propsName);
			e.printStackTrace();
		}
		finally
		{
			try
			{
			    in.close();
			}
			catch (Exception e)
			{
			}
		}
		
		return prop;
    }
}

⌨️ 快捷键说明

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