首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Tomcat 5.0 數據庫連接池圖解配置實戰指南

     編輯:Java 相關知識

Tomcat 內置 DBCP 連接池,通過 JNDI 數據源方式為 Web 應用提供高性能數據庫連接。本文以 Tomcat 5.0 + MySQL 5 + Eclipse/MyEclipse 為環境,手把手演示從創建項目、配置數據源、web.xml 引用到代碼獲取連接的全流程,並附帶測試驗證與配置文件解析。

環境準備

  • Tomcat 5.0
  • Eclipse 3.3 + MyEclipse 6.0
  • MySQL 5 + mysql-connector-java-3.1.12-bin.jar

將驅動包放入 %TOMCAT_HOME%/common/lib。

步驟 1:創建 Web 項目並驗證部署

  1. New Web Project → 名稱 ConnectorPool
  2. 啟動 Tomcat,訪問 https://127.0.0.1:8080/ConnectorPool/ 見默認頁面 → 部署成功

步驟 2:Tomcat Admin 圖形化配置數據源

  1. 訪問 https://127.0.0.1:8080/admin/,用 tomcat-users.xml 配置的帳號登錄
  2. 導航:Tomcat Server → Service (Catalina) → Host (localhost) → Context (/ConnectorPool) → Resources → Data Sources
  3. Create New Data Source,關鍵參數:
    • JNDI Name:jdbc/testpool
    • Data Source URL:jdbc:mysql://localhost:3306/conpool
    • JDBC Driver Class:com.mysql.jdbc.Driver
    • User Name:root
    • Password:****
    • 其餘默認(maxActive=4、maxIdle=2、maxWait=5000)
  4. Save,通常無需重啟 Tomcat

步驟 3:web.xml 聲明資源引用

<resource-ref>
  <description>DB Connection</description>
  <res-ref-name>jdbc/testpool</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
  <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

步驟 4:Java 代碼獲取連接

InitialContext ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/testpool");
Connection conn = ds.getConnection();
// 業務操作...
conn.close(); // 歸還池,非物理關閉

步驟 5:完整測試驗證

測試數據準備

  • 數據庫 conpool,表 test(id varchar(12)),數據:001/002/003

test.jsp 核心代碼

<%@ page import="java.sql.*, javax.sql.*, javax.naming.*" %>
<%
  out.print("beginning testing...<br>");
  DataSource ds = null;
  try {
    InitialContext ctx = new InitialContext();
    ds = (DataSource) ctx.lookup("java:comp/env/jdbc/testpool");
    Connection conn = ds.getConnection();
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("select * from test");
    while (rs.next()) { out.print(rs.getString(1) + "<br>"); }
    out.print("end testing.");
  } catch (Exception ex) { out.print("error:" + ex.getMessage()); ex.printStackTrace(); }
%>

預期輸出

beginning testing...
001
002
003
end testing.

生成的 Context 配置文件解析

部署後自動生成 %TOMCAT_HOME%/conf/Catalina/localhost/ConnectorPool.xml:

<Context docBase="ConnectorPool" path="/ConnectorPool" ...>
  <Resource auth="Container" description="DB Connection" name="jdbc/testpool" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/testpool">
    <parameter><name>driverClassName</name><value>com.mysql.jdbc.Driver</value></parameter>
    <parameter><name>url</name><value>jdbc:mysql://localhost:3306/conpool</value></parameter>
    <parameter><name>username</name><value>root</value></parameter>
    <parameter><name>password</name><value>root</value></parameter>
    <parameter><name>maxActive</name><value>4</value></parameter>
    <parameter><name>maxIdle</name><value>2</value></parameter>
    <parameter><name>maxWait</name><value>5000</value></parameter>
  </ResourceParams>
</Context>

關鍵參數速查表

參數含義
driverClassNameJDBC 驅動全限定類名
maxActive最大活躍連接數(含閒置+使用中)
maxIdle最大閒置連接數
maxWait獲取連接最長等待毫秒數
validationQuery驗證連接有效性的 SQL(如 SELECT 1)

常見坑位避雷

  • 不要在 Resources 根節點配置 → 那是全局數據源,應在具體 Context 下配置
  • JNDI 查找路徑必須加 java:comp/env/ 前綴
  • 驅動包放 common/lib,非項目 WEB-INF/lib,否則類加載器隔離導致找不到驅動
  • 連接用完必須 close() 歸還池,否則洩漏導致池耗盡
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved