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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    網(wǎng)站

    最新評(píng)論

    使用 DBCP 作 DB Connection pooling

    一般來說,在多人使用的系統(tǒng)中,應(yīng)用程式若沒有運(yùn)用 Connection pooling 的機(jī)制,會(huì)造成很大的效能問題,Connection 開開關(guān)關(guān),除了慢,也會(huì)耗損資料庫伺服器的資源。大部分的 AP Server 都有提供 Connection pooling 的機(jī)制,程式設(shè)計(jì)師並無須去顧慮這個(gè)機(jī)制是如何運(yùn)作的,只要懂得設(shè)定相關(guān)的參數(shù)即可。

    假如說,某種狀況下,我們必須自行建置 Connection pooling 的機(jī)制時(shí),該如何進(jìn)行呢?自己寫當(dāng)然是非常不劃算的,況且也不一定寫的好,在這裡,我們使用 jakata project 裡的一個(gè)子專案 DBCP,來快速的建置一個(gè)隨處可用的 Connection pooling 機(jī)制。

    在 Tomcat 裡,DBCP 是內(nèi)建的,用來管理 DB Connection pooling。這個(gè)機(jī)制是可移植且可獨(dú)立出來使用的,要在你的運(yùn)用程式中加上 DBCP 的功能,你必須至 http://jakarta.apache.org/commons/index.html 這個(gè)網(wǎng)址,找到該網(wǎng)頁內(nèi)的 Components,共有三個(gè)必須下載:Collections 、 DBCP 、 Pool 。DBCP 是運(yùn)用 Collections 及 Pool 這二個(gè)基礎(chǔ)的 Components 所設(shè)計(jì)出來的。當(dāng)然,如果你有安裝 Tomcat server,最佳的方式是至 $TOMCAT_HOME/common/lib/ 目錄下去取得,保證版本的配合度不會(huì)出現(xiàn)問題。在 Tomcat server 裡,以 Tomcat 5.0.19 版內(nèi)附的最新版本,這三個(gè) Components 的檔名分別是 commons-collections.jar 、 commons-pool-1.1.jar 及 commons-dbcp-1.1.jar。

    取得使用 DBCP 必備的 jar 檔後,請(qǐng)記得將這些 jar 檔,放置到 CLASSPATH 中,或直接放至 $JAVA_HOME/jre/lib/ext/ 目錄內(nèi)。不過,由於 DBCP 有運(yùn)用到 DataSource 的功能,而這功能是 J2EE 才有的,所以你還必須去下載 J2EE 的一個(gè) javax.jar 檔。

    環(huán)境建置好之後,接下來就可以開始設(shè)計(jì) Connection Pooling 的機(jī)制,在這兒,我們介紹最簡(jiǎn)單的作法,只要幾行指令就可以完成了,請(qǐng)看範(fàn)例區(qū)裡的程式及其說明。

    範(fàn)例:

    01 package util;
    02
    03 import java.sql.*;
    04 import javax.naming.*;
    05 import javax.sql.*;
    06
    07 import org.apache.commons.dbcp.BasicDataSource;
    08
    09 public class DBConnect {
    10 static DataSource dataSource = null;
    11
    12 publicstatic DataSource setupDataSource( String sDrvName, String sUserName,
    13 String sPwd, String connectURI ) {
    14 BasicDataSource ds = new BasicDataSource();
    15 ds.setDriverClassName( sDrvName );
    16 ds.setUsername( sUserName );
    17 ds.setPassword( sPwd );
    18 ds.setUrl( connectURI );
    19 ds.setMaxActive( 50 );
    20 ds.setMaxIdle( 10 );
    21 ds.setMaxWait( 10000 ); // 10 seconds
    22 return ds;
    23 }
    24
    25
    26 // static init of the class
    27 static {
    28 try {
    29 System.setProperty( "jdbc.drivers", "oracle.jdbc.driver.OracleDriver" );
    30 Class.forName( "oracle.jdbc.driver.OracleDriver" );
    31
    32 dataSource = setupDataSource( "oracle.jdbc.driver.OracleDriver", "username",
    33 "password", "jdbc:oracle:thin:@192.168.0.1:1521:SID" );
    34 }
    35 catch (Exception e) {
    36 System.out.println( "DBConnect.java => Unable to load driver." + e.getMessage() );
    37 }
    38 }
    39
    40 /**
    41 * 空的建構(gòu)元,不作任何處理動(dòng)作。
    42 */
    43 public DBConnect() {}
    44
    45 /**
    46 * 取得 DB Connection.
    47 */
    48 publicstatic Connection getConnection() throws SQLException,ClassNotFoundException {
    49 BasicDataSource bds = (BasicDataSource) dataSource;
    50 System.out.println("NumActive: " + bds.getNumActive() + ","
    51 + "NumIdle: " + bds.getNumIdle() );
    52 return dataSource.getConnection();
    53 }
    54 }

    完成這個(gè)程式後,接下來在你的應(yīng)用程式裡,用 DBConnect.getConnection() 來取得 DB Connection,就能享受到 Connection Pooling 的功能了。

    在實(shí)際的運(yùn)作中,這個(gè)範(fàn)例有加上偵錯(cuò)指令,會(huì)顯示出目前 Connection Pool 裡,有多少個(gè) Idle 的 Connection 及多少個(gè) Active 的 Connection,可供作為系統(tǒng)運(yùn)作的參數(shù)調(diào)整依據(jù)。

    posted on 2006-03-23 00:02 Vincent.Chen 閱讀(416) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 女人毛片a级大学毛片免费| 91av视频免费在线观看| 国产激情久久久久影院老熟女免费| 一区二区三区在线免费观看视频 | 免费一级做a爰片久久毛片潮| 精品一区二区三区免费观看| 99免费精品视频| 3344永久在线观看视频免费首页| 免费A级毛片无码免费视| 免费A级毛片无码A| 亚洲AV无码一区二区乱孑伦AS | 国产精品亚洲高清一区二区| 亚洲va国产va天堂va久久| 亚洲精品国产情侣av在线| 国产精品国产亚洲区艳妇糸列短篇| 一区二区三区免费精品视频| 久草免费手机视频| 夫妻免费无码V看片| 亚洲色婷婷六月亚洲婷婷6月| 亚洲精品电影在线| 精品国产日韩亚洲一区在线| 国产日韩一区二区三免费高清| 免费在线观看视频网站| 免费一看一级毛片全播放| 亚洲免费精彩视频在线观看| 亚洲人av高清无码| 成全动漫视频在线观看免费高清版下载| 国产成人精品免费视频网页大全 | 精品亚洲视频在线观看| 亚洲精品成人网站在线播放| 在线观看亚洲免费视频| 久久免费公开视频| 在线看片无码永久免费aⅴ| 亚洲春色在线视频| 亚洲6080yy久久无码产自国产| 久久国产精品2020免费m3u8| 国产免费av片在线无码免费看| 亚洲午夜视频在线观看| 真正全免费视频a毛片| 1000部夫妻午夜免费| 亚洲精品岛国片在线观看|