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

Tomcat + MySQL 資料庫連線池配置完整指南 (DBCP)

     編輯:MySQL 資料庫相關知識

環境準備

  1. 下載 mm.mysql-2.0.14-bin.jar (MySQL JDBC Driver)
  2. 放置於 $TOMCAT_HOME/common/lib/ 目錄

Server.xml 連線池配置

在 </Host> 標籤前加入:

<!-- MySQL Database Connection Pool -->
<Context path="/APPLICATION_NAME"
         docBase="APPLICATION_NAME"
         debug="5"
         reloadable="true"
         crossContext="true">

  <Logger className="org.apache.catalina.logger.FileLogger"
          prefix="localhost_DBTest_log."
          suffix=".txt"
          timestamp="true"/>

  <Resource name="jdbc/DATABASE_NAME"
            auth="Container"
            type="javax.sql.DataSource"/>

  <ResourceParams name="jdbc/DATABASE_NAME">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>

    <!-- JDBC Driver Class -->
    <parameter>
      <name>driverClassName</name>
      <value>org.gjt.mm.mysql.Driver</value>
    </parameter>

    <!-- Connection URL with autoReconnect -->
    <parameter>
      <name>url</name>
      <value>jdbc:mysql://localhost:3306/DATABASE_NAME?autoReconnect=true</value>
    </parameter>

    <parameter>
      <name>username</name>
      <value>DB_USERNAME</value>
    </parameter>

    <parameter>
      <name>password</name>
      <value>DB_PASSWORD</value>
    </parameter>

    <!-- Max connections in pool (0 = unlimited) -->
    <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>validationQuery</name>
      <value>SELECT 1</value>
    </parameter>
    <parameter>
      <name>testOnBorrow</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>removeAbandoned</name>
      <value>true</value>
    </parameter>
    <parameter>
      <name>removeAbandonedTimeout</name>
      <value>60</value>
    </parameter>
    <parameter>
      <name>logAbandoned</name>
      <value>true</value>
    </parameter>
  </ResourceParams>
</Context>

關鍵參數說明

參數說明建議值
maxActive連線池最大連線數100 (視 MySQL max_connections 調整)
maxIdle最大閒置連線數30
maxWait取得連線最長等待毫秒數10000
validationQuery驗證連線有效性的查詢SELECT 1
testOnBorrow借用連線時驗證true
removeAbandoned自動回收棄用連線true
autoReconnectJDBC URL 參數,連線斷開自動重連true

JSP/Servlet 使用範例

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/DATABASE_NAME");
Connection conn = ds.getConnection();
// 使用連線...
conn.close(); // 歸還連線池,非關閉實體連線

web.xml 資源參考宣告

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

注意事項

  • 確保 MySQL max_connections 足夠大(含連線池數量 + 其他連線)
  • Tomcat 5.5+ 需額外複製 commons-dbcp.jar、commons-pool.jar 至 common/lib
  • 生產環境建議啟用 testOnBorrow 與 validationQuery 防止斷線
  • 定期監控連線池使用狀況,調整 maxActive、maxIdle
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved