在學習 J2EE 與 EJB 開發時,許多開發者因機器資源有限,無法運行預設的 Cloudscape 或龐大的 Oracle,此時輕量級的 MySQL 成為最佳替代方案。本文記錄 J2EE 1.2.1 整合 MySQL 3.23.23 的完整配置過程與避坑經驗。
重要提醒: J2EE 要求 MySQL 版本至少為 3.23.15 以上。常見的 MySQL-shareware-3.22.30-win 版本無法滿足需求,這是笔者花費半天才發現的教訓。
修改 J2EE 的 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 驅動類別名稱。jdbc.datasources:格式為 JNDI名稱|JDBC_URL。其中 jdbc/TestDb 即為 JNDI 查找時使用的名稱。配置完成後,在 EJB 中即可透過 JNDI 取得連線:
Context ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("jdbc/TestDb");
Connection conn = ds.getConnection();
// 執行資料庫操作...
使用 J2EE 組裝工具產生的 JAR 檔雖可正常運行,但常彈出此警告。屬於工具本身的已知問題,不影響功能,可暫時忽略。
即使程式正常運行,error.log 和 DOS 視窗仍會記錄此錯誤。經測試,這不影響實際資料庫連線操作,屬於 J2EE 早期版本的日誌誤報,可不予理會。
MySQL 3.23.15 後預設禁止 root 用戶啟動服務。若必須使用 root,需加入參數:./safe_mysqld --user=root &。但強烈建議建立專用 MySQL 用戶啟動服務,避免 LOAD DATA INFILE 等指令賦予資料庫用戶系統 root 權限造成安全風險。
配置正確後回顧過程其實很簡單,但前期摸索極其耗時。J2EE 作為新生技術,錯誤提示機制不夠完善,穩定性有待加強,但只要核心功能運行正常,日誌錯誤可暫時忽略。希望本文能為後人節省寶貴時間。