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

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

?? 說明.txt

?? java編寫的數據庫連接池,內有詳細的使用說明
?? TXT
字號:
數據庫連接池的好處是不言而喻的,現在大部分的application server都提供自己的數據庫連接池方案,此時,只要按照application server的文檔說明,正確配置,即可在應用中享受到數據庫連接池的好處。 

但是,有些時候,我們的應用是個獨立的java application,并不是普通的WEB/J2EE應用,而且是單獨運行的,不要什么application server的配合,這種情況下,我們就需要建立自己的數據庫連接池方案了。這里,介紹如何利用apache的dbcp來建立為民自己的數據庫連接池。 

1。首先,下載必須的jar包 
dbcp包,目前版本是1.2.1:http://jakarta.apache.org/commons/dbcp/ ],在附件已有 

pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/,在附件已有 


如果下載的pool包是1.2的版本,還要下載common-collections包:http://jakarta.apache.org/commons/collections/ 
在建立我們自己的數據庫連接池時,可以使用xml文件來傳入需要的參數,這里只使用hard code的方式來簡單介紹,所有需要我們自己寫的代碼很少,只要建立一個文件如下: 
Java代碼 
import org.apache.commons.dbcp.BasicDataSource;   
import org.apache.commons.dbcp.BasicDataSourceFactory;   
  
import java.sql.SQLException;   
import java.sql.Connection;   
import java.util.Properties;   
  
public class ConnectionSource {   
    private static BasicDataSource dataSource = null;   
  
    public ConnectionSource() {   
    }   
  
    public static void init() {   
  
        if (dataSource != null) {   
            try {   
                dataSource.close();   
            } catch (Exception e) {   
                //   
            }   
            dataSource = null;   
        }   
  
        try {   
            Properties p = new Properties();   
            p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");   
            p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");   
            p.setProperty("password", "scott");   
            p.setProperty("username", "tiger");   
            p.setProperty("maxActive", "30");   
            p.setProperty("maxIdle", "10");   
            p.setProperty("maxWait", "1000");   
            p.setProperty("removeAbandoned", "false");   
            p.setProperty("removeAbandonedTimeout", "120");   
            p.setProperty("testOnBorrow", "true");   
            p.setProperty("logAbandoned", "true");   
  
            dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);   
  
        } catch (Exception e) {   
            //   
        }   
    }   
  
  
    public static synchronized Connection getConnection() throws  SQLException {   
        if (dataSource == null) {   
            init();   
        }   
        Connection conn = null;   
        if (dataSource != null) {   
            conn = dataSource.getConnection();   
        }   
        return conn;   
    }   
}  

import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;

import java.sql.SQLException;
import java.sql.Connection;
import java.util.Properties;

public class ConnectionSource {
    private static BasicDataSource dataSource = null;

    public ConnectionSource() {
    }

    public static void init() {

        if (dataSource != null) {
            try {
                dataSource.close();
            } catch (Exception e) {
                //
            }
            dataSource = null;
        }

        try {
            Properties p = new Properties();
            p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");
            p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");
            p.setProperty("password", "scott");
            p.setProperty("username", "tiger");
            p.setProperty("maxActive", "30");
            p.setProperty("maxIdle", "10");
            p.setProperty("maxWait", "1000");
            p.setProperty("removeAbandoned", "false");
            p.setProperty("removeAbandonedTimeout", "120");
            p.setProperty("testOnBorrow", "true");
            p.setProperty("logAbandoned", "true");

            dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);

        } catch (Exception e) {
            //
        }
    }


    public static synchronized Connection getConnection() throws  SQLException {
        if (dataSource == null) {
            init();
        }
        Connection conn = null;
        if (dataSource != null) {
            conn = dataSource.getConnection();
        }
        return conn;
    }
}
接下來,在我們的應用中,只要簡單地使用ConnectionSource.getConnection()就可以取得連接池中的數據庫連接,享受數據庫連接帶給我們的好處了。當我們使用完取得的數據庫連接后,只要簡單地使用connection.close()就可把此連接返回到連接池中,至于為什么不是直接關閉此連接,而是返回給連接池,這是因為dbcp使用委派模型來實現Connection接口了。 

在使用Properties來創建BasicDataSource時,有很多參數可以設置,比較重要的還有: 

testOnBorrow、testOnReturn、testWhileIdle,他們的意思是當是取得連接、返回連接或連接空閑時是否進行有效性驗證(即是否還和數據庫連通的),默認都為false。所以當數據庫連接因為某種原因斷掉后,再從連接池中取得的連接,實際上可能是無效的連接了,所以,為了確保取得的連接是有效的, 可以把把這些屬性設為true。當進行校驗時,需要另一個參數:validationQuery,對oracle來說,可以是:SELECT COUNT(*) FROM DUAL,實際上就是個簡單的SQL語句,驗證時,就是把這個SQL語句在數據庫上跑一下而已,如果連接正常的,當然就有結果返回了。 

還有2個參數:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis, 他們兩個配合,可以持續更新連接池中的連接對象,當timeBetweenEvictionRunsMillis 大于0時,每過timeBetweenEvictionRunsMillis 時間,就會啟動一個線程,校驗連接池中閑置時間超過minEvictableIdleTimeMillis的連接對象。 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产综合人成综合网站| 一区二区三区欧美视频| 在线观看亚洲精品| 99re视频精品| 色综合天天综合在线视频| 成人国产视频在线观看| 国产伦精品一区二区三区视频青涩| 日本在线不卡一区| 久久精品免费看| 国产一区二区在线观看视频| 国产高清精品在线| 国产成人亚洲精品狼色在线| 国产风韵犹存在线视精品| 国产风韵犹存在线视精品| 国产成人自拍网| 97se亚洲国产综合自在线观| 色狠狠av一区二区三区| 欧美日韩亚洲另类| 亚洲三级电影全部在线观看高清| 国产精品成人一区二区艾草| 亚洲免费在线播放| 亚欧色一区w666天堂| 免费美女久久99| 国产精品白丝jk白祙喷水网站| 成人激情电影免费在线观看| 色综合久久久久久久久久久| 欧美精品日韩一区| 精品国产麻豆免费人成网站| 国产精品伦理在线| 午夜精品久久久久久不卡8050| 日本在线不卡一区| 成人三级伦理片| 色综合天天狠狠| 欧美不卡一二三| 欧美日本国产视频| 青青青伊人色综合久久| 岛国av在线一区| 亚洲欧美日韩成人高清在线一区| 一区二区三区 在线观看视频 | 亚洲欧洲精品一区二区三区 | 97久久久精品综合88久久| 在线精品视频免费观看| 久久婷婷国产综合国色天香| 依依成人精品视频| 狠狠色综合播放一区二区| 成人黄色免费短视频| 制服丝袜国产精品| 亚洲欧美电影院| 久草热8精品视频在线观看| 日本精品一区二区三区高清| 日韩精品中午字幕| 一级精品视频在线观看宜春院 | 爽爽淫人综合网网站 | 日韩毛片视频在线看| 日本不卡1234视频| 99精品国产视频| 国产亚洲一区二区三区四区 | 成人av免费在线| 91精品国产综合久久精品麻豆 | 奇米影视一区二区三区小说| 91论坛在线播放| 国产精品三级av在线播放| 久草这里只有精品视频| 91精品国产麻豆国产自产在线| 尤物av一区二区| 91啪九色porn原创视频在线观看| 精品sm捆绑视频| 久久精品国产成人一区二区三区| 欧美三级乱人伦电影| 亚洲人123区| 色av一区二区| 一区二区久久久久久| 91小视频在线| 亚洲精品视频一区二区| av一区二区久久| 亚洲视频 欧洲视频| 97久久超碰精品国产| 自拍偷拍欧美激情| 91精品福利视频| 亚洲国产精品久久久久婷婷884 | 另类小说色综合网站| 日韩一区二区电影| 精彩视频一区二区| 欧美xxxx在线观看| 狠狠色综合日日| 中文乱码免费一区二区| 国产91精品免费| 最新热久久免费视频| 欧美中文字幕久久| 丝袜美腿亚洲色图| 久久综合久久综合久久| 国产成都精品91一区二区三| 亚洲欧洲在线观看av| 色94色欧美sute亚洲13| 视频精品一区二区| 精品国产99国产精品| 丰满亚洲少妇av| 亚洲视频免费在线观看| 欧美喷水一区二区| 激情久久五月天| 亚洲人成亚洲人成在线观看图片 | 五月激情综合婷婷| 精品日韩一区二区| eeuss鲁一区二区三区| 亚洲一区二区三区视频在线播放| 91精品国产一区二区三区| 国产高清视频一区| 亚洲成人综合视频| 久久综合久久久久88| 日本乱码高清不卡字幕| 日韩国产精品91| 国产精品久久久久久户外露出| 欧美日韩一区二区三区在线| 国产一区二区三区在线观看免费视频| 亚洲欧洲精品一区二区精品久久久| 欧美理论片在线| 成人高清视频免费观看| 午夜在线成人av| 中文字幕不卡一区| 日韩欧美中文一区二区| 久久久久久久久久久电影| 色婷婷av一区二区| 国产一区二区日韩精品| 亚洲福利国产精品| 国产精品色一区二区三区| 欧美一级欧美三级在线观看| 91小视频在线观看| 国产精品一二三四| 日韩成人一级片| 一区二区久久久| 中文字幕在线观看一区| 久久综合国产精品| 91麻豆精品国产自产在线观看一区 | 99热这里都是精品| 美女视频一区二区| 亚洲午夜免费电影| 亚洲女子a中天字幕| 亚洲国产精品av| 国产亚洲自拍一区| 久久综合丝袜日本网| 日韩三级中文字幕| 91精品国产综合久久久蜜臀粉嫩| 91久久免费观看| 色综合天天做天天爱| www.久久精品| 99综合电影在线视频| 国产成人在线电影| 国产二区国产一区在线观看| 国产精品99久久久久久久女警 | 中文字幕 久热精品 视频在线 | 国产精品入口麻豆原神| 精品国产百合女同互慰| 精品日韩欧美在线| 欧美一区二区久久| 欧美高清激情brazzers| 欧美高清www午色夜在线视频| 欧美日韩视频在线一区二区| 欧美色国产精品| 欧美女孩性生活视频| 91超碰这里只有精品国产| 91精品在线一区二区| 精品美女在线播放| 久久久久久日产精品| 国产精品少妇自拍| 国产精品美女久久久久aⅴ| 日韩美女啊v在线免费观看| 伊人色综合久久天天| 亚洲图片一区二区| 青娱乐精品视频在线| 国产精品一区不卡| 91丨porny丨国产| 欧美日免费三级在线| 91.com视频| 久久久国际精品| 亚洲精选视频在线| 日本强好片久久久久久aaa| 日本麻豆一区二区三区视频| 国产一区二区三区黄视频 | 日产欧产美韩系列久久99| 久久国产综合精品| 国产成人av一区| 日本韩国精品一区二区在线观看| 欧美日韩免费一区二区三区视频| 91精品国产乱码| 中文字幕av在线一区二区三区| 亚洲综合免费观看高清完整版 | 日本一区二区三区免费乱视频| 国产精品萝li| 视频一区国产视频| 成人午夜电影小说| 欧美一区二区在线不卡| 国产欧美精品一区| 日韩福利视频导航| 成人免费精品视频| 91精品欧美福利在线观看| 成人免费小视频| 精品写真视频在线观看| 在线看不卡av| 国产精品丝袜一区| 青青草原综合久久大伊人精品 |