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

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

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

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

    tomcat/resin使用全局?jǐn)?shù)據(jù)庫連接池資源

      我比較傾向于直接在web應(yīng)用中配置數(shù)據(jù)庫連接,例如使用struts或者是Hibernate的連接池,這樣的好處是無需了解不同的應(yīng)用服務(wù)器在配置數(shù)據(jù)源的差別,應(yīng)用實施的時候比較簡單。
      所以我最近的一些項目都是采用這種架構(gòu),但是這種方式有一些不足的就是當(dāng)應(yīng)用服務(wù)器配置了多個應(yīng)用,而這些應(yīng)用使用同一個數(shù)據(jù)庫,這就會導(dǎo)致不必要的資源浪費,也就是同一個應(yīng)用服務(wù)器中存在針對同一個數(shù)據(jù)庫的多個連接池。
      也就是說我們希望每個應(yīng)用服務(wù)器只有一個連接池的實例,在這個應(yīng)用服務(wù)器上運行的所有項目都可以使用這個連接池,下面介紹這種方式在Tomcat和Resin下的配置。
      Tomcat使用JNDI Resource來配置各種資源,包括數(shù)據(jù)庫連接池。這些Resource有兩種運行范圍,第一個就是Context級別,也就是說Context特有的Resource,該Resource只能被其所屬的Context訪問,顯然這不是我們所要的。
      另外一種就是定義全局命名資源,然后在Context中進(jìn)行引用,下面是一個配置的例子(server.xml):
    <Server port="8005" shutdown="SHUTDOWN">
    <GlobalNamingResources>
    <!-- 全局有效的JDBC資源 -->
    <Resource name="jdbc/dlog" auth="Container" type="javax.sql.DataSource"
    maxActive="100" maxIdle="30" maxWait="10000" defaultTransactionIsolation="1" defaultAutoCommit="false"
    poolPreparedStatements="true" maxOpenPreparedStatements="1000" initialSize="1"
    username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/dlogcn?autoReconnect=true"/>
    </GlobalNamingResources>
    <!-- Define the Tomcat Stand-Alone Service -->
    <Service name="Catalina">
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="8080" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost" appBase="webapps">
    <Context path="" docBase="C:/PROJECTS/JAVA/DLOG4J_V3/webapp" reloadable="true">
    <!-- 在Context引用全局JDBC資源 -->
    <ResourceLink name="jdbc/dlog" global="jdbc/dlog"/>
    </Context>
    </Host>
    </Engine>
    </Service>
    </Server>

     相比較Tomcat來說,Resin更為簡單,在Resin2中連接池的配置如下
    <caucho.com>
    <http-server>
    <http port='80'/>
    <servlet-mapping url-pattern='*.xtp' servlet-name='xtp'/>
    <servlet-mapping url-pattern='*.jsp' servlet-name='jsp'/>
    <resource-ref res-ref-name="java:/comp/env/jdbc/dlog" res-type="javax.sql.DataSource">
    <init-param driver-name="com.mysql.jdbc.Driver"/>
    <init-param url="jdbc:mysql://localhost:3306/dlogcn?autoReconnect=true"/>
    <init-param user="root"/>
    <init-param password="moabc"/>
    <init-param maxConnections="100"/>
    </resource-ref>
    <!-- default host if no other host matches -->
    <host id=''>
    <web-app id='' app-dir='C:/PROJECTS/JAVA/DLOG4J_V3/webapp' />
    </host>
    </http-server>
    </caucho.com>
      你可以把這段配置放在web-app中,則該連接池只有對應(yīng)的webapp才能訪問,放在<host>則,host中的所有web-app都可以訪問,放在<http-server>中,則整個resin的所有webapp都可以訪問。
      (實驗過程中發(fā)現(xiàn)resin2的文檔有誤,如果res-ref-name寫為jdbc/dlog,則webapp怎么都找不到這個資源,改成java:/comp/env/jdbc/dlog即可。)
      接下來我們就可以在應(yīng)用中使用如下代碼來獲取連接池的DataSource實例
      Context initContext = new InitialContext();
      Context envContext  = (Context)initContext.lookup("java:/comp/env");
      DataSource ds = (DataSource)envContext.lookup("jdbc/dlog");
      其他的應(yīng)用服務(wù)器的配置可以按照這個思路參考它的手冊進(jìn)行配置。應(yīng)該說不管是采用何種方式,性能上不會有太大的區(qū)別,如何選擇就在于你整個服務(wù)器的項目結(jié)構(gòu)。
      另外從上面Tomcat和Resin的配置來看,盡管Resin的配置要簡單于Tomcat,但是靈活性和擴(kuò)展性就相對要差一些

    posted on 2013-09-29 09:50 順其自然EVO 閱讀(333) 評論(0)  編輯  收藏 所屬分類: jmeter and badboy

    <2013年9月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲视屏在线观看| 美女免费视频一区二区| 精品熟女少妇AV免费观看| 亚洲精品无码少妇30P| 国产精品亚洲美女久久久| 免费黄色电影在线观看| 亚洲国产区男人本色在线观看| 免费乱理伦在线播放| 99re6热视频精品免费观看| 亚洲一本一道一区二区三区| 久久夜色精品国产亚洲av| 亚洲免费一级视频| 国产成人综合久久精品亚洲| 亚洲AV日韩AV高潮无码专区| 性做久久久久免费看| 亚洲免费视频网站| 高潮毛片无遮挡高清免费| 久久久久亚洲精品日久生情| 亚洲国产成人久久一区WWW| 又大又硬又爽又粗又快的视频免费| 精品久久久久久久久亚洲偷窥女厕| 亚洲人成网www| 亚洲国产成人久久综合野外| 91精品免费在线观看| 不卡视频免费在线观看| 亚洲精品理论电影在线观看| 亚洲日本在线观看| 亚洲欧洲一区二区三区| 女人张开腿等男人桶免费视频| 久久青草免费91线频观看站街| 免费看一级毛片在线观看精品视频| 亚洲欧洲中文日产| 亚洲人成人一区二区三区| 少妇亚洲免费精品| 青青草国产免费久久久91| 麻豆高清免费国产一区| 免费看一区二区三区四区| 丁香六月婷婷精品免费观看| 亚洲精品理论电影在线观看| 亚洲一级特黄特黄的大片| 亚洲一区影音先锋色资源|