连接池管理的代码

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

the detail pool management code

DBConnectionManager.Java

package com.coa.cim.database;

/**

* Title: CIM SYSTEM

* Description: The Customer Infomation Managment System

* Copyright: Copyright (c) 2002

* Company: COA Sci&Tech

* @author Mula Liu

* @version 1.0

*/

import java.sql.*;

import java.util.*;

import java.io.*;

public class DBConnectionManager {

private static DBConnectionManager instance=null;

private DBConnectionPool pool;

private static int client;

private Properties dbProps;

private Vector drivers;

public DBConnectionManager() {

init();

}

public synchronized static DBConnectionManager getInstance(){

if(instance==null){

instance=new DBConnectionManager();

}

client++;

return(instance);

} //create an instance of connection manager. if exits ,just returen the instance

void init(){

drivers=new Vector();

InputStream is=this.getClass().getResourceAsStream("../resource/Res.properties");

try{

dbProps=new Properties();

dbProps.load(is);

}catch(Exception ex){

System.out.println("Miss Resource File "+ex.getMessage());

}

loadDriver();

createPool();

} //using Properties.load() method to locate outter properties file

public void loadDriver(){

String driverClasses=dbProps.getProperty("dbDriver");

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);

}catch(Exception ex){

ex.printStackTrace();

}

}

} //parse the file, load mutil driver class in

public void createPool(){

String userName=dbProps.getProperty("dbUserName");

String passWord=dbProps.getProperty("dbPassword");

String url=dbProps.getProperty("connectionURL");

int maxConn;

try{

maxConn=Integer.valueOf(dbProps.getProperty("maxConnection","0")).intValue();

}catch(NumberFormatException ex){

maxConn=0;

}

pool=new DBConnectionPool(userName,password,url,maxConn);

} //parse the file, load username,password,url and maxconnection in

public synchronized int getClientCount(){

return(client);

}

public Connection getDBConnection(){

if(pool != null){

return(pool.getDBConnection());

}

return(null);

}//act as facade

public Connection getDBConnection(long timeout){

if(pool != null){

return(pool.getDBConnection(timeout));

}

return(null);

}//act as facade

public void freeDBConnection(Connection conn){

if(pool != null){

pool.freeDBConnection(conn);

}

}//act as facade

public void realse(){

if(this.client != 0){

return;

}

if(pool != null){

pool.release();

Enumeration enum=drivers.elements();

while(enum.hasMoreElements()){

Driver driver=(Driver)enum.nextElement();

try{

DriverManager.deregisterDriver(driver);

}catch(Exception ex){

System.out.println("Can not deregister driver "+driver.getClass().getName());

}

}

}

}//act as facade then de register driver

}

________________________________________

DBConnectionPool.java

package com.coa.cim.database;

/**

*

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航