【发布时间】:2017-10-23 21:58:14
【问题描述】:
我正在使用 jdbc 连接到 Oracle 10g 数据库。在 Eclipse/Java 中建立连接工作正常。但是,当我将代码移动到 Lotus 8.5.2 代理时,我最终会遇到以下错误:
Java.lang.ArrayIndexOutOfBoundsException: Array index out of range: -1
at oracle.jdbc.driver.T4CTTIoauthenticate.setSessionFields(T4CTTIoauthenticate.java:1019)
at oracle.jdbc.driver.T4CTTIoauthenticate.<init>(T4CTTIoauthenticate.java:186)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:354)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:454)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:802)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:298)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:222)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:166)
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
这是用于连接的代码:
Class.forName("oracle.jdbc.OracleDriver");
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@:xx.xx.xx.xx:1521:xx", "xx", "xx");
我尝试以不同的方式解决这个问题: - 在 Eclipse 中使用 Lotus JVM - 在 Eclipse 中使用不同的 jdbc jar - 使用不同的方式在 Lotus 中建立连接 - 在 lotus 中使用不同的 jdbc jars jars
最后我移动了 ojdbc14.jar 文件 Lotus\Notes\jvm\lib\ext 目录,它现在可以正常工作了。 此解决方案将起作用,但显然我更喜欢将这个 jar 与 nsf 一起分发。有什么办法可以实现吗?
正如leyrer 所建议的那样。我尝试将以下行添加到“/jvm/lib/security/java.policy”文件中
permission java.security.AllPermission;
这确实会导致相同的错误消息。 现在我会坚持将 ojdbc5.jar 放在 /ext 目录中。
【问题讨论】:
-
只是我好奇您在 LotusNotes 中使用的是哪个 JDBC 驱动程序,LotusDomino,因为据我所知,IBM 长期以来不支持 LotusFamily 的 JDBC 驱动程序
-
ojdbc14.jar 类,用于来自 oracle 站点的 JDK 1.4 和 1.5。我也试过 ojdbc5.jar。
-
想象一下,不确定代理是否从外部支持 JDBC,从 Domino 方面你可以做到这一点,有趣的是我会标记为通知
标签: java oracle jdbc lotus-notes