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

Tomcat 4.1.31 數據庫連接池 (DBCP) 完整配置指南

     編輯:Java 相關知識

環境

Tomcat 4.1.31 + JDK 1.4.2 + SQL Server 2000 + Win2000 AS

配置步驟

1. server.xml 定義 Resource

在 <Context path="/blog" docBase="blog" ...> 內添加:

<Resource name="jdbc/blog" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/blog">
  <parameter><name>factory</name><value>org.apache.commons.dbcp.BasicDataSourceFactory</value></parameter>
  <parameter><name>driverClassName</name><value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value></parameter>
  <parameter><name>url</name><value>jdbc:microsoft:sqlserver://localhost:1433;databaseName=blog</value></parameter>
  <parameter><name>username</name><value>sa</value></parameter>
  <parameter><name>password</name><value>sa</value></parameter>
  <parameter><name>maxActive</name><value>20</value></parameter>
  <parameter><name>maxIdle</name><value>20</value></parameter>
  <parameter><name>maxWait</name><value>-1</value></parameter>
</ResourceParams>

參數說明:factory 指定 DBCP 工廠;driverClassName 視資料庫而定(MySQL: org.gjt.mm.mysql.Driver,Oracle: oracle.jdbc.driver.OracleDriver);maxActive 最大活躍連接,maxIdle 最大空閒連接,maxWait=-1 無限等待。

2. web.xml 宣告 Resource Reference

<resource-ref>
  <description>SqlServer Datasource example</description>
  <res-ref-name>jdbc/blog</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
</resource-ref>

3. 放置 JDBC 驅動 JAR

將廠商驅動 JAR(SQL Server 三個 jar、MySQL mm.mysql-2.0.14.jar、Oracle classes12.jar)複製到 $CATALINA_HOME/common/lib。

測試 JSP (testdb.jsp)

<%@ page import="java.sql.*, javax.naming.*" %>
<%
  Context initCtx = new InitialContext();
  Context envCtx = (Context) initCtx.lookup("java:comp/env");
  DataSource ds = (DataSource) envCtx.lookup("jdbc/blog");
  Connection conn = ds.getConnection();
  Statement stmt = conn.createStatement();
  stmt.executeUpdate("insert into test(id,name) values('00001','fany')");
  ResultSet rs = stmt.executeQuery("select id,name from test");
  if (rs.next()) { out.println(rs.getString(1) + " " + rs.getString(2)); }
%>

訪問 https://localhost:8080/blog/testdb.jsp 應輸出 00001 fany。

常見問題

  • 驅動類找不到 → 確認 JAR 在 common/lib,重啟 Tomcat。
  • JNDI 名稱不匹配 → server.xml name、web.xml res-ref-name、代碼 lookup 三者一致。
  • 連接耗盡 → 調大 maxActive、檢查代碼是否 close() 連接。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved