溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

tomcat/resin中怎么利用全局數(shù)據(jù)庫連接池資源

發(fā)布時間:2021-08-04 15:00:00 來源:億速云 閱讀:101 作者:Leah 欄目:數(shù)據(jù)庫

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)tomcat/resin中怎么利用全局數(shù)據(jù)庫連接池資源,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

Tomcat使用JNDI Resource來配置各種資源,包括數(shù)據(jù)庫連接池。這些Resource有兩種運行范圍,第一個就是Context級別,也就是說Context特有的Resource,該Resource只能被其所屬的Context訪問,顯然這不是我們所要的。
另外一種就是定義全局命名資源,然后在Context中進行引用,下面是一個配置的例子(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ù)器的配置可以按照這個思路參考它的手冊進行配置。應(yīng)該說不管是采用何種方式,性能上不會有太大的區(qū)別,如何選擇就在于你整個服務(wù)器的項目結(jié)構(gòu)。

上述就是小編為大家分享的tomcat/resin中怎么利用全局數(shù)據(jù)庫連接池資源了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI