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

Domino 7 Java Agent 連接 SQL Server 2005 JDBC 亂碼與初始化失敗排查

     編輯:關於SqlServer

問題現象

  • 獨立 Java 程式使用 sqljdbc.jar (JDBC 1.2) 連接 SQL Server 2005 正常。
  • 同樣程式碼放入 Domino 7 Java Agent 執行,拋出 java.lang.ExceptionInInitializerError(JDBC 初始化失敗)。
  • SQL Server 2000 JDBC 驅動在 Domino 中連接 SQL Server 2000 無問題。

環境差異分析

Domino 7 內建 JVM 版本較舊,可能不完全相容 Microsoft JDBC Driver 1.2(官方聲明支援 JRE 1.4+)。懷疑類別載入器衝突或安全管理員限制。

程式碼結構要點

import lotus.domino.*;
public class JavaAgent extends AgentBase {
    public void NotesMain() {
        TestSQL t = new TestSQL();
        t.WriteLog("aaa","bbb");
    }
}

public class TestSQL {
    public int WriteLog(String unid, String strOperator, String strOperation) {
        String url = "jdbc:sqlserver://192.168.1.2:1433;databaseName=test;user=sa;password=passWord";
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        Connection con = DriverManager.getConnection(url);
        // ... 查詢邏輯
    }
}

排查建議

  1. 驅動包隔離:將 sqljdbc.jar 放入 Domino jvm/lib/ext 或透過 Notes.ini JavaUserClassesExt 指定獨立路徑,避免與 Domino 內建類別衝突。
  2. JVM 版本確認:檢查 Domino 7 實際 JRE 版本(java -version),若低於 1.4 需升級 Domino 或降級驅動。
  3. 改用 jTDS 驅動:開源 jtds.jar 相容性較佳,連線字串:jdbc:jtds:sqlserver://host:1433/db。
  4. ODBC 橋接備案:配置系統 DSN,使用 sun.jdbc.odbc.JdbcOdbcDriver 繞過純 Java 驅動問題(效能較差)。
  5. 安全原則調整:java.policy 授予 java.net.SocketPermission、java.sql.SQLPermission。

社群回饋

多位開發者確認:Domino 7 + SQL Server 2005 純 Java JDBC 穩定性較差,生產環境多改用 jTDS 或中介 Web Service 方式繞過。

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