首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Tomcat 6 + MySQL 連接池配置實戰:context.xml、web.xml、JNDI 查找與驅動部署完整流程

     編輯:MySQL 綜合教學

Tomcat 6 目錄結構變化重點

  • 移除 common/ 目錄,改為 lib/ 目錄統一放置共用庫。
  • JDBC 驅動 mysql-connector-java-x.x.x.jar 必須放入 $CATALINA_HOME/lib/。
  • 連接池配置遷移至 context.xml(全域)或 META-INF/context.xml(應用級)。

步驟一:準備檔案

  • MySQL 安裝包
  • mysql-connector-java-5.1.x.jar(或 8.0.x 對應 MySQL 8.0)
  • apache-tomcat-6.0.x.exe

步驟二:部署 JDBC 驅動


copy mysql-connector-java-5.1.48.jar %CATALINA_HOME%\lib\
-- 或 Linux
cp mysql-connector-java-5.1.48.jar $CATALINA_HOME/lib/

重啟 Tomcat 生效。

步驟三:配置全域連接池

編輯 $CATALINA_HOME/conf/context.xml,在 <Context> 內新增:



關鍵參數說明:

  • maxActive:最大活躍連線數(建議 ≤ MySQL max_connections - 保留管理連線)。
  • maxIdle:最大閒置連線數。
  • maxWait:取得連線最長等待毫秒數。
  • validationQuery / testOnBorrow:借用連線前驗證有效性,防止「斷連」錯誤。
  • testWhileIdle / timeBetweenEvictionRunsMillis:空閒連線驅逐機制。

步驟四:應用層宣告資源參考

編輯應用 WEB-INF/web.xml:



    DB Connection
    jdbc/MySQL
    javax.sql.DataSource
    Container

注意:res-ref-name 必須與 context.xml 的 name 屬性一致(jdbc/MySQL)。

步驟五:JSP/Servlet 程式碼查找與使用


<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>
<%
    InitialContext ctx = new InitialContext();
    DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQL");
    Connection conn = ds.getConnection();
    try {
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM users");
        while (rs.next()) {
            out.println(rs.getString(1) + "
"); } } finally { conn.close(); // 歸還連線池,關鍵! } %>

常見問題排查

現象原因解決
NameNotFoundException: jdbc/MySQL JNDI 名稱不匹配、web.xml 缺少 resource-ref 核對 context.xml name、web.xml res-ref-name、lookup 路徑
ClassNotFoundException: com.mysql.jdbc.Driver 驅動 jar 未放入 $CATALINA_HOME/lib 複製 jar 到 lib 目錄、重啟 Tomcat
Communications link failure MySQL 服務未啟動、IP/Port 錯誤、防火牆 檢查 MySQL 狀態、url 參數、防火牆 3306
連線洩漏、池耗盡 程式碼未在 finally 關閉連線 強制使用 try-with-resources / finally conn.close()
驗證查詢失效 MySQL 8.0+ 驅動類別為 com.mysql.cj.jdbc.Driver 更新 driverClassName、validationQuery="SELECT 1"

升級建議:Tomcat 6 已停止維護

  • Tomcat 6 EOL (2016),存在安全漏洞,強烈建議升級至 Tomcat 9/10。
  • Tomcat 9/10 配置類似,但需注意:

-- Tomcat 9/10 (Servlet 4.0/5.0)
driverClassName="com.mysql.cj.jdbc.Driver"  -- MySQL 8.0+ 驅動
url="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved