亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbconnectionpool.java~1~

?? 封裝了SQL、Socket、WAP、MIME等功能的通用組件
?? JAVA~1~
字號:
/**
 * This inner class represents a connection pool. It creates new
 * connections on demand, up to a max number if specified.
 * It also makes sure a connection is still open before it is
 * returned to a client.
 */
package com.lazybug.sql;

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

public class DBConnectionPool extends Listener
{
    static final long INTERVAL = 30000; //監控線程的監控間隔
    public int checkedOut = 0;
    private LinkedList m_listConn = new LinkedList();
    private String driver;
    private String password;
    private String URL;
    private String user;

    public DBConnectionPool()
    {
        this.start();
    }

    /**
     * Creates new connection pool.
     *
     * @param name The pool name
     * @param URL The JDBC URL for the database
     * @param user The database user, or null
     * @param password The database user password, or null
     * @param maxConn The maximal number of connections, or 0
     *   for no limit
     */
    public DBConnectionPool(String driver, String url, String user, String password)
        throws Exception
    {
        this.driver = driver;
        this.URL = url;
        this.user = user;
        this.password = password;
        Class.forName(this.driver).newInstance();
        DBConnection c = this.getConnection();
        if( c == null ) throw new Exception();

        this.freeConnection(c);
        this.start();
    }

    public synchronized void close()
    {
        this.stop();
        this.notifyAll();
    }
    /**
     * Checks in a connection to the pool. Notify other Threads that
     * may be waiting for a connection.
     *
     * @param con The connection to check in
     */
    public synchronized void freeConnection(DBConnection con)
    {
        // Put the connection at the end of the Vector
       // Log.logMessage(this, "釋放一個數據庫"+con.dbconn_id+"!");
        m_listConn.addLast(con);
        checkedOut -= 1;
        notifyAll();
    }

    /**
     * Checks out a connection from the pool. If no free connection
     * is available, a new connection is created unless the max
     * number of connections has been reached. If a free connection
     * has been closed by the database, it's removed from the pool
     * and this method is called again recursively.
     */
    public synchronized DBConnection getConnection()
    {
        DBConnection dbconn = null;
        if ( m_listConn.size() > 0)
        {
            dbconn = (DBConnection) m_listConn.removeFirst();
            //Log.logMessage(this, "從連接池獲取了一個數據庫"+dbconn.dbconn_id+"!");
        }
        else
        {
            int capacity = ConfigUtil.getInteger("db_poolcapacity");
            if (capacity == 0 || checkedOut < capacity)
            {
                dbconn = newConnection();
                //Log.logMessage(this, "創建了一個新的數據庫"+dbconn.dbconn_id+"!");
            }
            else
            {
                Log.logWarning(this, "數據庫連接池已經到了最大限度!" + this.toString());
            }
        }

        if (dbconn != null) checkedOut += 1;
        return dbconn;
    }

    /**
     * Checks out a connection from the pool. If no free connection
     * is available, a new connection is created unless the max
     * number of connections has been reached. If a free connection
     * has been closed by the database, it's removed from the pool
     * and this method is called again recursively.
     * <P>
     * If no connection is available and the max number has been
     * reached, this method waits the specified time for one to be
     * checked in.
     *
     * @param timeout The timeout value in milliseconds
     */
    public DBConnection getConnection(long timeout)
    {
        long startTime = System.currentTimeMillis();
        DBConnection dbconn = null;
        while ( (dbconn = getConnection()) == null)
        {
            synchronized( this )
            {
                try
                {
                    wait(10);
//System.out.println("發生等待獲取數據庫連接的事情!!!!!!!!!!!!!");
                }
                catch (InterruptedException e)
                {}
            }

            if ( (System.currentTimeMillis() - startTime) >= timeout )
            {
                //Log.logWarning(this, "獲取數據庫連接超時!");
                break;
            }
        }
        return dbconn;
    }

    /**
     * Closes all available connections.
     */
    private synchronized void release()
    {
        DBConnection dbconn = null;
        try
        {
            while ( (dbconn = (DBConnection)this.m_listConn.removeLast()) != null)
            {
                dbconn.close();
                checkedOut -= 1;
            }
        }
        catch(NoSuchElementException e)
        {
        }
        catch(SQLException e)
        {
        }
    }

    /**
     * Creates a new connection, using a userid and password
     * if specified.
     */
    private DBConnection newConnection()
    {
        DBConnection con = null;
        try
        {
            if (user == null)
                con = new DBConnection(URL);
            else
                con = new DBConnection(URL, user, password);
        }
        catch (SQLException e)
        {
            Log.logError(this, "Fail to create DBS connection!");
            return null;
        }
        return con;
    }

    /**
     * 該線程用來檢查連接池中超時的對象
     * @see java.lang.Runnable#run()
     */
    public void run()
    {
        this.remark = "[數據庫連接池]";
        Log.logMessage(this, "DBS connection pool listener is start.");

        while( this.isRunning )
        {
            for( int k = 0; k < m_listConn.size(); k++ )
            {
                DBConnection dbconn = getConnection();
                try
                {
                    if ( dbconn.validPeriod() < System.currentTimeMillis() )
                    {
                        Log.logMessage(this, "["+dbconn.dbconn_id+"]已經過期,資源被釋放!");
                        dbconn.close();
                        checkedOut -= 1;
                    }
                    else
                        freeConnection(dbconn);
                }
                catch(Exception e)
                {
                    Log.getInstance().write("釋放數據庫連接異常"+e);
                }
            }

            synchronized( this ){
                try{
                    this.isBusy = false;
                    wait(INTERVAL);
                    this.isBusy = true;
                }catch(InterruptedException e){}
            }
        }
        this.isBusy = false;
        release();
        Log.logMessage(this, "DBS connection pool listener end.Connection resources is release!");
    }

    public String toString()
    {
        StringBuffer strBf = new StringBuffer();
        strBf.append("忙連接["+checkedOut);
        strBf.append("]閑連接["+m_listConn.size());
        strBf.append("]");
        return strBf.toString();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合色综合久久| 一区二区欧美在线观看| 欧美日韩成人一区二区| 91麻豆国产在线观看| 91免费看视频| 色吧成人激情小说| 欧美视频中文字幕| 欧美日本高清视频在线观看| 欧美高清激情brazzers| 91精品国产品国语在线不卡| 91精品综合久久久久久| 欧美一级片在线看| 久久久亚洲午夜电影| 国产精品免费视频一区| 一区二区三区欧美亚洲| 亚洲一区二区三区视频在线| 婷婷久久综合九色综合伊人色| 人人狠狠综合久久亚洲| 国产一区二区三区在线观看精品| 国产成人在线视频网址| 色综合天天综合在线视频| 欧美日韩免费高清一区色橹橹| 欧美一区二区视频网站| 久久久久国色av免费看影院| 亚洲欧洲日本在线| 日韩中文字幕91| 国产最新精品免费| 在线免费精品视频| 欧美大片顶级少妇| 亚洲欧美日韩综合aⅴ视频| 蜜臀精品久久久久久蜜臀| 成人免费av在线| 欧美日韩一区二区在线观看视频 | 丁香啪啪综合成人亚洲小说| 91麻豆视频网站| 日韩写真欧美这视频| 欧美激情一区二区三区全黄| 亚洲h动漫在线| 成人国产一区二区三区精品| 91麻豆精品国产91久久久更新时间 | 91亚洲大成网污www| 欧美一区二区精品久久911| 国产日韩精品一区二区三区 | 久久久久国产精品人| 亚洲成人免费在线| 成人av午夜电影| 精品久久久久久久久久久院品网 | 日韩欧美电影一二三| 中文字幕在线观看一区| 黄色日韩三级电影| 欧美视频一区在线观看| 中文av一区二区| 激情综合网激情| 欧美高清视频一二三区| 亚洲三级电影全部在线观看高清| 国产综合久久久久影院| 91精品欧美综合在线观看最新| 成人欧美一区二区三区黑人麻豆| 九九**精品视频免费播放| 欧美日韩亚洲综合| 亚洲综合自拍偷拍| 99re成人精品视频| 中文字幕免费一区| 国产原创一区二区三区| 日韩欧美一区中文| 视频一区视频二区中文字幕| 日本高清无吗v一区| 日韩一区中文字幕| 91在线观看下载| 亚洲欧洲一区二区在线播放| 成人黄色软件下载| 国产精品久久久久久久久免费桃花| 狠狠色丁香婷婷综合久久片| 欧美福利视频一区| 日本视频一区二区| 69精品人人人人| 美女看a上一区| 精品国产伦一区二区三区观看方式| 蜜臀av一区二区在线免费观看 | 不卡一卡二卡三乱码免费网站| 国产午夜精品福利| 国产综合成人久久大片91| 26uuu精品一区二区| 国产不卡在线播放| 亚洲女同一区二区| 欧美三级资源在线| 蜜桃视频在线一区| 久久人人超碰精品| 成人午夜视频免费看| 亚洲欧美视频在线观看视频| 欧美三区在线观看| 久久se这里有精品| 国产欧美精品国产国产专区 | 日韩高清一级片| 精品久久久久99| 波多野结衣在线一区| 亚洲一级在线观看| 日韩午夜电影av| 国产福利一区二区| 一区二区三区加勒比av| 91精品国产综合久久久久久久久久| 久久精品噜噜噜成人88aⅴ| 久久久久九九视频| 欧美制服丝袜第一页| 捆绑紧缚一区二区三区视频 | 欧美性极品少妇| 久久激情综合网| 亚洲欧洲日韩av| 日韩免费电影网站| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 日韩免费视频一区| 欧美日韩免费观看一区二区三区| 麻豆一区二区三| 中文字幕日韩一区| 精品国产一二三| 色噜噜狠狠色综合中国| 国产一区二区在线看| 亚洲一二三四在线观看| 久久精品日韩一区二区三区| 欧美性猛片aaaaaaa做受| 国产精品白丝av| 舔着乳尖日韩一区| 自拍偷拍亚洲综合| 中文字幕免费不卡在线| 日韩欧美亚洲另类制服综合在线| 色综合久久久久| 成人爽a毛片一区二区免费| 青青青爽久久午夜综合久久午夜| 亚洲美女一区二区三区| 国产视频不卡一区| 精品蜜桃在线看| 日韩欧美亚洲一区二区| 9191久久久久久久久久久| 色综合咪咪久久| 成人aa视频在线观看| 国产一区二区看久久| 日韩成人免费电影| 香蕉加勒比综合久久| 亚洲欧美经典视频| 国产精品成人免费| 国产精品久久久久影视| 欧美激情自拍偷拍| 国产欧美日韩在线观看| 久久久亚洲欧洲日产国码αv| 日韩三级视频在线观看| 欧美一卡2卡3卡4卡| 欧美美女视频在线观看| 欧美丝袜丝nylons| 欧美日韩国产精品成人| 欧美日韩免费在线视频| 欧美精品一二三四| 欧美一区二区三区视频免费 | 日韩一卡二卡三卡国产欧美| 欧美伦理电影网| 91麻豆精品久久久久蜜臀 | 国产精品中文字幕日韩精品| 蜜桃av噜噜一区| 国产一区亚洲一区| 国产精品系列在线播放| 成人黄色一级视频| 日本高清免费不卡视频| 欧美日韩国产中文| 欧美v日韩v国产v| 国产欧美日产一区| 亚洲人成7777| 亚洲成人一二三| 麻豆91小视频| 成人av动漫网站| 欧美日韩亚洲不卡| 日韩精品中文字幕在线不卡尤物| 精品国产区一区| 欧美国产激情二区三区| 亚洲精品乱码久久久久久久久| 一区二区三区在线视频观看| 日韩成人精品在线观看| 国产精品一二三| 91麻豆精品在线观看| 欧美一区二区视频网站| 国产午夜亚洲精品不卡| 亚洲一区二区三区四区五区黄| 蜜臀久久99精品久久久久宅男| 国产福利一区二区| 欧美视频在线一区| 久久久高清一区二区三区| 亚洲免费三区一区二区| 五月婷婷欧美视频| 国产精品亚洲第一| 欧美挠脚心视频网站| 中文字幕国产一区二区| 五月天婷婷综合| 成a人片亚洲日本久久| 日韩视频在线永久播放| 亚洲欧洲av在线| 久久精品99国产精品日本| 色婷婷综合激情| 国产亚洲精品精华液| 日本三级韩国三级欧美三级| 97精品久久久午夜一区二区三区| 日韩精品一区二区三区四区视频| 一区二区三区四区亚洲|