从8u144更新Java后,无法使用ojdbc8连接到Oracle数据库-8u171之后(包括8u171)的任何更新



我一直在尝试升级一个使用ojdbc8连接到Oracle 12.2数据库的应用程序中使用的Java版本(当前为8u144)。我最近一次尝试更新到8u201失败,出现以下错误:

Exception in thread "main" java.lang.NullPointerException
at oracle.net.jndi.JndiAttrs.getAttrs(JndiAttrs.java:215)
at oracle.net.resolver.AddrResolution.<init>(AddrResolution.java:237)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:233)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:384)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:273)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:198)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:176)
at Main.main(Main.java:22)

我使用的LDAP url的语法支持和文档类似于以下内容:

"jdbc:oracle:thin:@ldaps://ldap.example.com:7777/sales,cn=OracleContext,dc=com"

虽然我的问题与下面的问题类似,但我没有使用Hibernate,这个问题似乎并没有真正回答/解决潜在的问题。

Java 8升级后无法获得数据库连接

为了简化一切,我将测试简化为一个简单的项目,只使用ojdbc8和以下内容:

String url = "jdbc:oracle:thin:@ldaps://....";
OracleDataSource ods = new OracleDataSource();
ods.setUser("indiana");
ods.setPassword("thedoctor");
ods.setURL(url);
Connection conn = ods.getConnection();
PreparedStatement st = conn.prepareStatement("select * from world where temple = 'doom'");
ResultSet rs = st.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("last"));
}

如果我使用完全相同的代码和配置将Java切换到8u144,那么上面的操作就很好。我不知所措。。。

UPDATE我已经缩小了问题的范围,发现中断发生在Java 8u171上。我正在查看那个版本的发行说明,以及我现在能找到的任何其他内容。

创建LDAPS连接时,SSL握手似乎失败了。使用javanet调试选项运行测试程序将有助于分析问题。添加此选项-Djavax.net.debug=all用于运行测试程序,调试输出将包含SSL调试日志,这将有助于确定原因。JDK 8u171有一些与安全相关的更改。

(SSL调试::https://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/ReadDebug.html)

相关内容

最新更新