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

Tomcat 配置 JNDI 資料源連線池連接 Oracle 完整教學

     編輯:Oracle 資料庫基礎

前言

在 Java Web 專案中,透過 Tomcat 內建的 JNDI 資料源 (javax.sql.DataSource) 管理連線池,是標準且高效的做法。本文涵蓋 context.xml 設定、驅動程式部署、JNDI 查找與程式碼使用全流程。

1. 設定 Tomcat context.xml

編輯 $CATALINA_BASE/conf/context.xml (或專案 META-INF/context.xml):

<Context reloadable="true">
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
  <Resource name="jdbc/Oracle"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="scott"
            password="tiger"
            driverClassName="oracle.jdbc.OracleDriver"
            url="jdbc:oracle:thin:@192.168.1.3:1521:ora92"
  />
</Context>

關鍵屬性:maxActive 最大連線數、maxIdle 最大閒置、maxWait 取得連線最長等待毫秒數。

2. 部署 Oracle JDBC 驅動

將 ojdbc8.jar (或舊版 ojdbc6.jar) 放入 $CATALINA_HOME/lib/ 目錄,**不可** 放在專案 WEB-INF/lib,否則會發生類別載入衝突導致 Cannot create JDBC driver 錯誤。

3. Java 程式碼查找與使用

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;

public void insertUser(String username, String password) {
    String sql = "INSERT INTO users(username, password) VALUES (?, ?)";
    try {
        Context initCtx = new InitialContext();
        DataSource ds = (DataSource) initCtx.lookup("java:/comp/env/jdbc/Oracle");
        try (Connection conn = ds.getConnection();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1, username);
            ps.setString(2, password);
            ps.executeUpdate();
        } // try-with-resources 自動關閉
    } catch (Exception e) {
        e.printStackTrace();
    }
}

常見坑點與驗證

  • JNDI 名稱必須以 java:/comp/env/ 開頭對應 context.xml 的 name 屬性。
  • 驅動類別名稱:Oracle 10g+ 統一為 oracle.jdbc.OracleDriver (舊版 oracle.jdbc.driver.OracleDriver 已棄用)。
  • 啟動 Tomcat 觀察日誌,若出現 Initializing data source 'jdbc/Oracle' 表示成功。
  • 可在 context.xml 加入 validationQuery="SELECT 1 FROM DUAL" 與 testOnBorrow="true" 保證連線有效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved