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

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

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

    內(nèi)蒙古java團(tuán)隊(duì)

    j2se,j2ee開發(fā)組
    posts - 139, comments - 212, trackbacks - 0, articles - 65
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    ?本文旨在給程序開發(fā)人員提供一個(gè)比較具體的Tomcat連接池參考方案,為了提高文章的可讀性,文章前端引用了一位前輩的話,如果構(gòu)成誤解,請(qǐng)多多諒 解,本文不是從商業(yè)考慮的。有問題請(qǐng)聯(lián)系作者M(jìn)SN:hpj2001(at)hotmail.com,Email:tocow(at) google.com。

    連接池簡(jiǎn)介
      ?程序開發(fā),存在很多問題:首先,每一次Web請(qǐng)求都要建立一次數(shù)據(jù)庫連 接。建立連接是一個(gè)費(fèi)時(shí)的活動(dòng),每次都得花費(fèi)0.05s~1s的時(shí)間,而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對(duì)于一次或幾次數(shù)據(jù)庫操作,或許感覺不出系統(tǒng)有 多大的開銷??墒菍?duì)于現(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫連接操作勢(shì)必 占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降,嚴(yán)重的甚至?xí)斐煞?wù)器的崩潰。不是危言聳聽,這就是制約某些電子商務(wù)網(wǎng)站發(fā)展的技術(shù)瓶頸問題。其次,對(duì)于 每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會(huì)導(dǎo)致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫。還有,這種開發(fā)不能 控制被創(chuàng)建的連接對(duì)象數(shù),系統(tǒng)資源會(huì)被毫無顧及的分配出去,如連接過多,也可能導(dǎo)致內(nèi)存泄漏,服務(wù)器崩潰。
    ??????數(shù)據(jù)庫連接池(connection?pool)的工作原理:
    ??????由上面的分析可以看出,問題的根源就在于對(duì)數(shù)據(jù)庫連接資源的低效管理。
    對(duì) 于共享資源,有一個(gè)很著名的設(shè)計(jì)模式:資源池(Resource?Pool)。該模式正是為了解決資源的頻繁分配、釋放所造成的問題。為解決上述問題,可 以采用數(shù)據(jù)庫連接池技術(shù)。數(shù)據(jù)庫連接池的基本思想就是為數(shù)據(jù)庫連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫連接時(shí),只需 從“緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過設(shè)定連接池最大連接數(shù)來防止系統(tǒng)無盡的與數(shù)據(jù)庫連接。更為重要的是我們可以通過連接池的管理 機(jī)制監(jiān)視數(shù)據(jù)庫的連接的數(shù)量、使用情況,為系統(tǒng)開發(fā)、測(cè)試及性能調(diào)整提供依據(jù)。
    一、Tomcat一般性說明
    1、本壓縮包內(nèi)的tomcat為apache-tomcat-5.5.20,截止到2006-10-12,是www.apache.org上最新的tomcat版本。
    2、Tomcat使用的端口都是默認(rèn)的。兩個(gè)比較重要的端口說明,shutdown?port:8005;non-SSL?HTTP/1.1?Connector?port:8080。
    3、涉及到修改的文件:
    ???a../?conf下server.xml、web.xml
    ???b../common/lib下增加ms-sql?jdbc的三個(gè)jar包msbase.jar、mssqlserver.jar、msutil.jar
    二、Tomcat配置連接池方案
    ???????本文針對(duì)的是tomcat?5.5版本的連接池介紹,其它版本可能不適用。
    ???????數(shù)據(jù)源可以配置成全局的和局部的:可以在任意Context中引用全局的數(shù)據(jù)源,在某一Context配置的數(shù)據(jù)源,不能在其它Context引用它。理解了全局和局部數(shù)據(jù)源的關(guān)系,下面就來介紹一下詳細(xì)配置說明,如下:
    1、編輯打開./confCatalina/localhost/gdczsam.xml可以看到:
    <!--F?hpj?2006-10-12?
    ????Defualt,?we?set?all?different?Resources?as?Global-Resource[which?defined?in?server.xml?<GlobalNamingResources></GlobalNamingResources>],?
    ????and?get?special?Resource?we?needed?in?per-web-application?contexts?from?Global-Resource.
    ????otherwise,we?can?set?Resource?we?needed?in?any?special?Context,?all?two?solutions?are?offered.

    ????A.during?application?development?set?reloadable="true",?when?deployed?production?set?reloadable="false"

    ????B.many?other?datebase,?url?and?driverClassName?like?underside?list:
    ??????1.ms-sql???????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    ?????????????????????url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"

    ??????2.oracle???????driverClassName="oracle.jdbc.driver.OracleDriver"
    ?????????????????????url="jdbc:oracle:thin:@127.0.0.1:1521:SAM_GDCZ"

    ??????3.postgresql???driverClassName="org.postgresql.Driver"
    ?????????????????????url="jdbc:postgresql://127.0.0.1:5432/SAM_GDCZ"

    ??????4.mysql????????driverClassName="org.gjt.mm.mysql.Driver"[old?mySql?jdbc?driver]
    ?????????????????????driverClassName="com.mysql.jdbc.Driver"
    ?????????????????????url="jdbc:mysql://127.0.0.1:3306/SAM_GDCZ"
    -->

    <Context?docBase="setup?directory"?path="/gdczsam"?reloadable="true"?cookies="true"?crossContext="true"?privileged="true"?antiResourceLocking="false"?antiJARLocking="false">

    <!--
    ????<Resource?name="jdbc/mssql-SAM_GDCZ"
    ??????????????auth="Container"
    ????????????????type="javax.sql.DataSource"
    ????????????????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    ????????????????url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"
    ????????????????username="sa"
    ????????????????password=""
    ????????????????maxIdle="30"
    ????????????????maxWait="10000"
    ????????????????maxActive="100"/>
    -->

    <!--F?hpj?2006-10-12?
    ????name:?The?name?of?the?resource?link?to?be?created,?which?will?be?used?in?this?web-application?context?environment.
    ????global:?The?name?of?the?linked?global?resource?in?the?global?JNDI?context.
    ????type:?The?fully?qualified?Java?class?name?expected?by?the?web?application?when?it?performs?a?lookup?for?this?resource?link.
    -->
    ???<ResourceLink?name="mssql-SAM_GDCZ"?global="jdbc/mssql-SAM_GDCZ"?type="javax.sql.DataSource"/>

    </Context>
    ?????????本文提供的tomcat連接池的默認(rèn)配置如上述,代碼的說明性很強(qiáng),既采用在./?conf/server.xml配置的全局?jǐn)?shù)據(jù)源,然后在指定的Context中調(diào)用的方式。
    ?????????server.xml中的數(shù)據(jù)源就是上述代碼段注釋的Resource節(jié)點(diǎn),被包含在server.xml中的GlobalNamingResources節(jié)點(diǎn)中。
    ?????????其中需要注意的是,該數(shù)據(jù)源需要在./conf/web.xml中加入一段聲明,如下:
    ????<resource-ref>
    ????????<description>DB?Connection</description>
    ????????<res-ref-name>jdbc/mssql-SAM_GDCZ</res-ref-name>
    ????????<res-type>javax.sql.DataSource</res-type>
    ????????<res-auth>Container</res-auth>
    ????</resource-ref>
    2、 第二種tomcat數(shù)據(jù)源的配置方式是本人推薦的:不在server.xml的GlobalNamingResources節(jié)點(diǎn)中加入Resource節(jié) 點(diǎn),而是對(duì)每個(gè)指定的Context配置數(shù)據(jù)源,這樣結(jié)構(gòu)比較清晰。采用這種方式的gdczsam.xml配置如下:
    <Context?docBase="setup?directory"?path="/gdczsam"?reloadable="true"?cookies="true"?crossContext="true"?privileged="true"?antiResourceLocking="false"?antiJARLocking="false">

    ????<Resource?name="jdbc/mssql-SAM_GDCZ"
    ??????????????auth="Container"
    ????????????????type="javax.sql.DataSource"
    ????????????????driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
    ????????????????url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=SAM_GDCZ"
    ????????????????username="sa"
    ????????????????password=""
    ????????????????maxIdle="30"
    ????????????????maxWait="10000"
    ????????????????maxActive="100"/>

    </Context>
    3、以上兩種方式,只要是不同的數(shù)據(jù)源都必須在./conf/web.xml中加入resource-ref聲明。
    4、產(chǎn)品部署時(shí),不論使用什么方式來部署程序,都需要在./confCatalina/localhost中加入類似gdczsam.xml的文件來配置數(shù)據(jù)源。

    評(píng)論

    # re: 使用Tomcat-5.5.20配置數(shù)據(jù)庫連接池詳細(xì)介紹  回復(fù)  更多評(píng)論   

    2008-06-17 09:45 by 東東
    很好很強(qiáng)大,我也是一個(gè)內(nèi)蒙人,看到家鄉(xiāng)人寫的文章感覺特別親切,初用DBCP,非常感謝您的文章!

    # re: 使用Tomcat-5.5.20配置數(shù)據(jù)庫連接池詳細(xì)介紹  回復(fù)  更多評(píng)論   

    2008-12-23 11:29 by ziyoo0830
    @東東
    不錯(cuò)

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩在线视频免费看| 久久久久久国产精品免费免费| 亚洲一区精彩视频| 亚洲精品天天影视综合网| 久久久久国产亚洲AV麻豆 | 亚洲国产精品嫩草影院久久| 国产免费一区二区三区| 中文毛片无遮挡高潮免费| 毛片在线全部免费观看| 男女一边摸一边做爽的免费视频 | 日韩插啊免费视频在线观看| 一级免费黄色大片| 中国在线观看免费的www| 久久WWW免费人成—看片| 中文字幕久无码免费久久| 久久久久女教师免费一区| aa午夜免费剧场| a在线观看免费视频| 98精品全国免费观看视频| AV无码免费永久在线观看| 日韩免费视频播放| 黑人大战亚洲人精品一区| 日韩va亚洲va欧洲va国产| 亚洲激情视频网站| 国产偷国产偷亚洲高清在线| 一边摸一边桶一边脱免费视频 | 亚洲一区二区影院| 亚洲中文字幕久久精品蜜桃| 免费大片黄在线观看| 久久久久久影院久久久久免费精品国产小说 | 亚洲国产成人久久综合区| 亚洲AV无码久久精品成人| 亚洲视频在线观看2018| 特级做a爰片毛片免费看| 亚洲成人免费在线| 亚洲AV无码乱码在线观看| 亚洲一级毛片在线播放| 久久久久成人片免费观看蜜芽| 国产一区二区三区在线免费| 亚洲人成电影在线观看网| 免费国产成人18在线观看|