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

Tomcat 6 整合 MySQL 連線池完整設定教學

     編輯:MySQL 綜合教學

前言

在 Java Web 開發中,資料庫連線池是提升效能、管理資源的關鍵。Tomcat 6 內建 DBCP 連線池支援,透過 context.xml 即可完成設定,無需修改 server.xml,大幅簡化部署流程。本文記錄完整設定步驟與測試程式碼。

環境準備

  • MySQL 5.0.27 (MySQL-5.0.27-win32.zip)
  • MySQL Connector/J 5.0.4 (mysql-connector-java-5.0.4-bin.jar)
  • Apache Tomcat 6.0.10 (apache-tomcat-6.0.10.exe)

步驟 1:放置 JDBC 驅動程式

將 mysql-connector-java-5.0.4-bin.jar 複製至 $CATALINA_HOME/lib 目錄(Tomcat 6 以前放在 common/lib)。這步驟最容易被忽略,缺少驅動會拋出 ClassNotFoundException。

步驟 2:設定 context.xml 定義資料源

編輯 $CATALINA_HOME/conf/context.xml,在 <Context> 標籤內加入:

<Resource name="jdbc/MySQL"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8"
    username="root"
    password="root"
    maxActive="100"
    maxIdle="30"
    maxWait="10000"
    removeAbandoned="true"
    removeAbandonedTimeout="60"
    logAbandoned="true" />

參數說明:

  • maxActive:最大活躍連線數
  • maxIdle:最大閒置連線數
  • maxWait:取得連線最長等待毫秒數
  • removeAbandoned:自動回收被遺棄的連線,防洩漏

步驟 3:設定 web.xml 宣告資源參考

在應用程式的 WEB-INF/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>

注意:res-ref-name 必須與 context.xml 的 name 屬性一致(去掉 jdbc/ 前綴或完整保留,視 JNDI 查找方式而定)。

步驟 4:JSP 測試程式

<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>
<%@ page contentType="text/html;charset=UTF-8" %>
<html><body>
<%
    out.print("測試開始
"); try { InitialContext ctx = new InitialContext(); DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MySQL"); Connection conn = ds.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM users"); while (rs.next()) { out.print(rs.getString(1) + "
"); } out.print("測試結束"); rs.close(); stmt.close(); conn.close(); } catch (Exception ex) { out.print("例外:" + ex.getMessage()); ex.printStackTrace(); } %> </body></html>

常見問題與解決

  1. NameNotFoundException:檢查 JNDI 名稱是否為 java:comp/env/jdbc/MySQL,確認 web.xml 與 context.xml 名稱對應
  2. Communications link failure:確認 MySQL 服務啟動、防火牆、bind-address 設定
  3. 連線洩漏:務必在 finally 區塊關閉 Connection,或啟用 removeAbandoned
  4. 編碼問題:JDBC URL 加上 useUnicode=true&characterEncoding=utf8

進階調優建議

  • 依據負載調整 maxActive、maxIdle,避免過大造成資料庫連線數耗盡
  • 啟用 testOnBorrow、validationQuery="SELECT 1" 確保連線有效
  • 生產環境建議使用 HikariCP 取代內建 DBCP,效能更優

結語

Tomcat 6 透過 context.xml 設定連線池簡潔明瞭,掌握此技能可快速完成專案資料庫整合。實務上建議進一步導入連線池監控與調優,確保高併發下的穩定性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved