<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    codefans

    導航

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統計

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    程序設計鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    一個簡單的pool代碼

    the detail pool management code

    DBConnectionManager.java

    package com.coa.cim.database;

    /**
    * <p>Title: CIM SYSTEM</p>
    * <p>Description: The Customer Infomation Managment System</p>
    * <p>Copyright: Copyright (c) 2002</p>
    * <p>Company: COA Sci&Tech</p>
    * @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;

    /**
    * <p>Title: CIM SYSTEM</p>
    * <p>Description: The Customer Infomation Managment System</p>
    * <p>Copyright: Copyright (c) 2002</p>
    * <p>Company: COA Sci&Tech</p>
    * @author Mula Liu
    * @version 1.0
    */

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

    public class DBConnectionPool {

    private String dbUserName;
    private String dbPassword;
    private String connectionURL;
    private int maxConnection;
    private Vector freeConnections;
    private int checkedOut;

    public DBConnectionPool(String userName,String password,String url,int maxConn) {
    this.dbUserName=userName;
    this.dbPassword=password;
    this.connectionURL=url;
    this.maxConnection=maxConn;
    freeConnections=new Vector();
    }// initalize

    public synchronized Connection getDBConnection(){
    Connection conn=null;
    if(freeConnections.size() > 0){
    conn=(Connection)freeConnections.elementAt(0);
    freeConnections.removeElementAt(0);
    try{
    if(conn.isClosed()){
    conn=getDBConnection();
    }
    }catch(SQLException ex){
    conn=getDBConnection();
    }
    }else if(maxConnection==0 || checkedOut < maxConnection){
    conn=newDBConnection();
    }
    if(conn!=null){
    checkedOut++;
    }
    return(conn);
    }// using FIFO method to get connection instance

    public synchronized Connection getDBConnection(long timeout){
    long startTime=new java.util.Date().getTime();
    Connection conn;
    while((conn=getDBConnection())==null){
    try{
    wait(timeout);
    }catch(InterruptedException ex){}
    if(new java.util.Date().getTime()-startTime >= timeout){
    return(null);
    }
    }
    return conn;
    }

    public Connection newDBConnection(){
    Connection conn=null;
    try{
    if(dbUserName==null){
    conn=DriverManager.getConnection(connectionURL);
    }else{
    conn=DriverManager.getConnection(connectionURL,dbUserName,dbPassword);
    }
    }catch(SQLException ex){
    ex.printStackTrace();
    }
    return(conn);
    }

    public synchronized void freeDBConnection(Connection conn){
    freeConnections.addElement(conn);
    checkedOut--;
    notifyAll();
    }

    public synchronized void release(){
    Enumeration allConnections=freeConnections.elements();
    while(allConnections.hasMoreElements()){
    try{
    Connection conn=(Connection)allConnections.nextElement();
    conn.close();
    }catch(SQLException ex){
    ex.printStackTrace();
    }
    }
    freeConnections.removeAllElements();
    }

    }

    posted on 2005-11-22 11:23 春雷的博客 閱讀(121) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲hairy多毛pics大全| 99在线在线视频免费视频观看 | 一级女性全黄久久生活片免费| 亚洲AV无码一区二区乱孑伦AS | 久久精品国产亚洲av品善| 久久精品国产亚洲77777| 丁香五月亚洲综合深深爱| 永久黄网站色视频免费| 99久在线国内在线播放免费观看| 午夜成人无码福利免费视频| 亚洲日本va一区二区三区| 亚洲日本乱码一区二区在线二产线| 亚洲午夜未满十八勿入网站2| 国产无遮挡吃胸膜奶免费看视频| 99在线精品视频观看免费| 久久久久国色av免费看| 国产99精品一区二区三区免费 | 啊v在线免费观看| 成熟女人牲交片免费观看视频 | 亚洲国产精品lv| 亚洲人成亚洲人成在线观看| 亚洲第一成人影院| 免费**毛片在线播放直播| 在线日韩av永久免费观看| 妞干网在线免费视频| 中字幕视频在线永久在线观看免费| 精品无码无人网站免费视频| 青青青国产手机频在线免费观看 | 国产亚洲色视频在线| 四虎成人精品在永久免费 | 一级毛片试看60分钟免费播放| 国产成人久久精品亚洲小说| MM1313亚洲精品无码久久| 日韩国产精品亚洲а∨天堂免| 亚洲国产成人无码AV在线| 亚洲乱码无人区卡1卡2卡3| 亚洲熟妇无码av另类vr影视| 亚洲一本到无码av中文字幕| 亚洲成a人片在线不卡一二三区| 亚洲AV无码一区二区三区性色| 日韩成人精品日本亚洲|