首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Tomcat 連接池配置全攻略:兩種 MySQL DataSource 設定方式

     編輯:MySQL 資料庫相關知識

方式一:全域配置在 server.xml

在 $CATALINA_HOME/conf/server.xml 的 <GlobalNamingResources> 區塊宣告連接池:

<Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container">
  <ResourceParams name="jdbc/mysql">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter><name>maxWait</name><value>5000</value></parameter>
    <parameter><name>maxActive</name><value>20</value></parameter>
    <parameter><name>maxIdle</name><value>10</value></parameter>
    <parameter><name>username</name><value>shopadm</value></parameter>
    <parameter><name>password</name><value>123</value></parameter>
    <parameter><name>url</name><value>jdbc:mysql://localhost/shopdb?useUnicode=true&characterEncoding=gb2312</value></parameter>
    <parameter><name>driverClassName</name><value>com.mysql.jdbc.Driver</value></parameter>
  </ResourceParams>
</Resource>

在 web.xml 宣告資源參考:

<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/MySQL</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

在 $CATALINA_HOME/conf/Catalina/localhost/shopping.xml 連結全域資源:

<Context ...>
  <ResourceLink name="jdbc/mysql" type="javax.sql.DataSource" global="jdbc/mysql"/>
</Context>

方式二:應用層級配置(不動 server.xml)

直接在 $CATALINA_HOME/conf/Catalina/localhost/shopping.xml 定義資源:

<Context>
  <Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container">
    <ResourceParams name="jdbc/mysql">
      <parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
      <parameter><name>maxWait</name><value>5000</value></parameter>
      <parameter><name>maxActive</name><value>20</value></parameter>
      <parameter><name>maxIdle</name><value>10</value></parameter>
      <parameter><name>username</name><value>shopadm</value></parameter>
      <parameter><name>password</name><value>123</value></parameter>
      <parameter><name>url</name><value>jdbc:mysql://localhost/shopdb?useUnicode=true&characterEncoding=gb2312</value></parameter>
      <parameter><name>driverClassName</name><value>com.mysql.jdbc.Driver</value></parameter>
    </ResourceParams>
  </Resource>
</Context>

在應用程式的 WEB-INF/web.xml 加入資源參考:

<web-app version="2.4" xmlns="https://java.sun.com/xml/ns/j2ee" ...>
  <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>jdbc/MySQL</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
</web-app>

關鍵參數說明

  • maxActive:最大活躍連接數
  • maxIdle:最大閒置連接數
  • maxWait:取得連接最長等待毫秒數
  • factory:DBCP 工廠類,負責建立實際連接池

JNDI 查找範例

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/mysql");
Connection conn = ds.getConnection();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved