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

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

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

    JBOSS 點(diǎn)滴

    豐豐的博客

    連接池配置

    配置連接池

     本文旨在給程序開發(fā)人員提供一個(gè)比較具體的Tomcat連接池參考方案,為了提高文章的可讀性,文章前端引用了一位前輩的話,如果構(gòu)成誤解,請多多諒解,本文不是從商業(yè)考慮的。有問題請聯(lián)系作者M(jìn)SN:hpj2001(at)hotmail.com,Email:tocow(at)google.com。

    連接池簡介
       程序開發(fā),存在很多問題:首先,每一次Web請求都要建立一次數(shù)據(jù)庫連接。建立連接是一個(gè)費(fèi)時(shí)的活動(dòng),每次都得花費(fèi)0.05s~1s的時(shí)間,而且系統(tǒng)還要分配內(nèi)存資源。這個(gè)時(shí)間對于一次或幾次數(shù)據(jù)庫操作,或許感覺不出系統(tǒng)有多大的開銷??墒菍τ诂F(xiàn)在的Web應(yīng)用,尤其是大型電子商務(wù)網(wǎng)站,同時(shí)有幾百人甚至幾千人在線是很正常的事。在這種情況下,頻繁的進(jìn)行數(shù)據(jù)庫連接操作勢必占用很多的系統(tǒng)資源,網(wǎng)站的響應(yīng)速度必定下降,嚴(yán)重的甚至?xí)斐煞?wù)器的崩潰。不是危言聳聽,這就是制約某些電子商務(wù)網(wǎng)站發(fā)展的技術(shù)瓶頸問題。其次,對于每一次數(shù)據(jù)庫連接,使用完后都得斷開。否則,如果程序出現(xiàn)異常而未能關(guān)閉,將會導(dǎo)致數(shù)據(jù)庫系統(tǒng)中的內(nèi)存泄漏,最終將不得不重啟數(shù)據(jù)庫。還有,這種開發(fā)不能控制被創(chuàng)建的連接對象數(shù),系統(tǒng)資源會被毫無顧及的分配出去,如連接過多,也可能導(dǎo)致內(nèi)存泄漏,服務(wù)器崩潰。
          數(shù)據(jù)庫連接池(connection pool)的工作原理:
          由上面的分析可以看出,問題的根源就在于對數(shù)據(jù)庫連接資源的低效管理。
    對于共享資源,有一個(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ā)、測試及性能調(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配置連接池方案
           本文針對的是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"
    加載包mssqlserver.jar、msbase.jar、msutil.jar.

          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 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>
            <descrīption>DB Connection</descrīption>
            <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),而是對每個(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ù)源。

    posted on 2013-10-26 16:39 半導(dǎo)體 閱讀(198) 評論(0)  編輯  收藏 所屬分類: Eclipse

    主站蜘蛛池模板: 国产精品免费一区二区三区四区| 亚洲中文字幕无码亚洲成A人片| 美女被爆羞羞网站在免费观看| 99热在线精品免费全部my| 香蕉视频在线观看亚洲| 日本一区午夜艳熟免费| 国产亚洲欧洲精品| 久久久久久噜噜精品免费直播| 亚洲国产综合精品中文字幕| 国产综合激情在线亚洲第一页| 又黄又爽的视频免费看| 日本一区二区三区在线视频观看免费| 又黄又爽一线毛片免费观看| 一级做a免费视频观看网站| 亚洲综合另类小说色区| 久99久精品免费视频热77| 亚洲黄色网址在线观看| 99久久这里只精品国产免费| 亚洲AV电影天堂男人的天堂| 国产男女猛烈无遮挡免费视频 | 国产精品美女午夜爽爽爽免费| 久久亚洲最大成人网4438| 国产精品无码一区二区三区免费 | 亚洲AV性色在线观看| 免费无遮挡无码永久在线观看视频| 羞羞漫画小舞被黄漫免费| 亚洲中文字幕不卡无码| 91香焦国产线观看看免费| 亚洲熟妇无码AV不卡在线播放 | 亚欧免费一级毛片| 中文字幕无码精品亚洲资源网久久| 国产免费观看视频| 免费日本一区二区| 亚洲精品国产摄像头| 自拍偷自拍亚洲精品第1页 | 亚洲AV成人无码天堂| 亚洲国产成人久久综合区| 中文字幕免费在线| 一区二区三区免费在线视频 | 特级毛片A级毛片100免费播放| 亚洲va中文字幕无码久久|