Tomcat連線池使用

banq發表於2006-04-17

前面已經討論過,使用資料庫連線池可以提高資料庫的訪問效能。Tomcat的資料庫連線池是使用Jakarta-Commons專案中Database Connection Pool,包含下列元件:Jakarta-Commons DBCP 、Jakarta-Commons Collections和Jakarta-Commons Pool。這些庫檔案包必須和JDBC驅動程式一起安裝在$CATALINA_HOME/common/lib這個目錄下。如果檢查發現沒有,請到http://jakarta.apache.org/中下載相應的庫檔案包。
在$CATALINA_HOME/common/lib必須有下列包:
• commons-collections.jar。
• commons-dbcp.jar。
• commons-pool.jar。
• mysql-connector-java-3.0.7-stable-bin.jar //MySQL的驅動程式。
確定這些庫檔案包確實無誤後,進行Tomcat的配置。
上個章節介紹了在Tomcat中部署應用的方法,其中第2種方法是修改server.xml,加入新的Context,只有一行就直接結束了,現在需要在這個Context中再增加內容,如下:

<Context path="/register" 
docBase="D:/javasource/train/SimpleRegister/defaultroot" debug="1"
                 reloadable="true" crossContext="true" >

<!--注意這裡jdbc/userDB是JDNI Name,可以自己取名,這類似一個通用令牌
 將在程式系統中也使用到 -->
 <Resource name="jdbc/userDB"   auth="Container"  type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/userDB">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>maxActive</name> <!--最大連線數目 -->
      <value>100</value>
    </parameter>
    <parameter>
      <name>maxIdle</name> <!--最大空閒數,即最小連線數目 -->
      <value>30</value>
    </parameter>
    <parameter>
      <name>maxWait</name> <!--等待連線時間 -->
      <value>10000</value>
    </parameter>
    <parameter>
     <name>username</name>
     <value>banq</value> <!--資料庫訪問使用者名稱 -->
    </parameter>
    <parameter>
     <name>password</name>
     <value>9999</value> <!--資料庫訪問使用者名稱 -->
    </parameter>
    <parameter>
       <name>driverClassName</name>
       <value>com.mysql.jdbc.Driver</value><!-- 資料庫驅動名 -->
    </parameter>
    <parameter>
      <name>url</name> <!-- 資料庫URL -->
      <value>jdbc:mysql://localhost/user?autoReconnect=true</value>
    </parameter>
  </ResourceParams>
</Context>
<p class="indent">


後面幾個引數配置就是JDBC的通用配置了,一旦Tomcat容器配置完成後,就可以在應用系統透過JNDI訪問到這個資料庫連線池。
本系統更改web.xml如下:
<web-app>
<description> Simple Register</description>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/userDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
這樣在Web容器中,透過java:comp/env/jdbc/userDB就可以尋找到jdbc/userDB的連線池。注意,在Java程式碼中寫JNDI Name時,要加上java:comp/env/,這也是通用規定。

將java:comp/env/jdbc/userDB也可配置進入jdonframework.xml中原來JBoss的java:/TestDS就可以使用Tomcat的資料來源了。

相關文章