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

问题描述 投票:2回答:1

我一直在尝试升级使用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和这个问题似乎并没有真正回答/地址可能是什么潜在的问题。

Unable to get db connection after Java 8 upgrade

为了简化一切,我已经减少只用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。我不知所措......

更新我已经收窄的问题了一些,并发现断裂发生在Java的8u171。我在找到该版本与别的我现在能找到的发行说明。

java oracle jdbc java-8 ojdbc
1个回答
0
投票

貌似在创建LDAPS连接的SSL握手失败。与Java网调试选项运行测试程序将帮助分析问题。添加此选项-Djavax.net.debug =所有运行测试程序和调试输出将包含在SSL调试日志,这将是确定的原因都是有用的。 JDK 8u171有一些安全相关的变化。

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

© www.soinside.com 2019 - 2024. All rights reserved.