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

J2EE 整合 MySQL 實戰指南:從驅動安裝到 JNDI 資料源配置全解析

     編輯:J2EE

前言:為什麼選擇 MySQL?

在學習 J2EE 與 EJB 的過程中,資料庫的選擇直接影響開發體驗。商業資料庫(Oracle、DB2)安裝龐大、資源佔用高,對開發機器構成沉重負擔。MySQL 憑藉輕量級、開源免費、跨平台等優勢,成為 J2EE 開發與測試環境的首選。本文記錄 J2EE 1.2.1 整合 MySQL 3.23 的完整配置流程,助您避開版本陷阱與配置坑點。

一、 環境準備與版本相容性陷阱

軟體版本備註
作業系統Windows NT 4.0測試環境
J2EE SDK1.2.1Sun 參考實作
JDK1.3.0
MySQL3.23.23-beta-win必須 ≥ 3.23.15
JDBC 驅動mm.mysql-2.0.2org.gjt.mm.mysql.Driver

血淚教訓:早期常用 MySQL 3.22.x 版本,但 J2EE 要求 3.23.15 以上(支援更完整的 JDBC 2.0 API)。版本不符會導致啟動時出現難以理解的 ClassNotFoundException 或 SQLException,浪費數小時排查。

二、 J2EE 參考實作配置檔修改

編輯 $J2EE_HOME/config/default.properties,新增/修改以下兩行:

jdbc.drivers=org.gjt.mm.mysql.Driver
jdbc.datasources=jdbc/TestDb|jdbc:mysql://localhost:3306/test?user=jian&password=jian
  • jdbc.drivers:指定 JDBC 驅動完整類名,確保驅動 JAR(mm.mysql-2.0.2-bin.jar)已放入 $J2EE_HOME/lib 目錄。
  • jdbc.datasources:格式為 JNDI名稱|JDBC URL。jdbc/TestDb 為 JNDI 查詢名稱,EJB 透過此名稱查找 DataSource。

三、 EJB 中查找與使用 DataSource

import javax.naming.*;
import javax.sql.DataSource;
import java.sql.Connection;

public class MyBean implements SessionBean {
    private DataSource ds;
    
    public void setSessionContext(SessionContext ctx) {
        try {
            Context ic = new InitialContext();
            ds = (DataSource) ic.lookup("java:comp/env/jdbc/TestDb"); // 標準 JNDI 路徑
        } catch (NamingException e) {
            throw new EJBException(e);
        }
    }
    
    public void someBusinessMethod() {
        Connection conn = null;
        try {
            conn = ds.getConnection(); // 從連線池取得連線
            // 執行 SQL...
        } catch (SQLException e) {
            throw new EJBException(e);
        } finally {
            if (conn != null) try { conn.close(); } catch (SQLException ignored) {}
        }
    }
}

注意:J2EE 參考實作會自動將 default.properties 中定義的資料源綁定至 java:comp/env/jdbc/... 命名空間,EJB 應使用完整 JNDI 路徑查找。

四、 常見錯誤訊號與應對策略

現象可能原因處理建議
啟動時 error.log 出現
Cannot find principal mapping information for data source with JNDI name jdbc/TestDb
J2EE 1.2.1 的安全機制預期有 principal mapping,但未配置 可忽略。若 EJB 能正常取得連線並執行 SQL,此警告不影響功能。屬於參考實作的已知瑕疵。
組裝工具產生的 JAR 執行時彈出
無效的 Windows NT 映像
J2EE 參考實作的部署工具與特定 JDK 版本相容性問題 改用命令列 deploytool 或 Ant 腳本打包,避開 GUI 工具 Bug。
ClassNotFoundException: org.gjt.mm.mysql.Driver 驅動 JAR 未置於正確目錄 確認 mm.mysql-2.0.2-bin.jar 在 $J2EE_HOME/lib 或啟動類路徑中。
連線被拒絕 Connection refused MySQL 服務未啟動或埠號錯誤 檢查 MySQL 是否運行於 3306 埠,防火牆是否放行。

五、 經驗總結

  1. 版本對齊是前提:MySQL ≥ 3.23.15、mm.mysql 驅動匹配 JDK 版本。
  2. JNDI 名稱統一:default.properties、ejb-jar.xml、程式碼查找三處名稱必須一致。
  3. 容忍參考實作的噪音:J2EE RI 的錯誤日誌常包含誤導性警告,以「功能是否正常」為準。
  4. 生產環境另擇方案:參考實作僅供開發測試,生產請使用 WebLogic、WebSphere、JBoss 等認證應用伺服器。

結語

J2EE 整合 MySQL 看似簡單,實則暗藏版本相容、JNDI 命名、驅動部署等細節陷阱。掌握上述配置要點與常見錯誤應對,即可輕鬆建立輕量級 J2EE 開發環境,專注於 EJB 業務邏輯開發,而非與基礎設施糾纏。

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