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

标签 java hibernate jdbc ojdbc

我最近将应用程序从 Java 1.7 升级到 1.8。其余库版本保持不变。升级后出现以下错误:

DEBUG 2015-11-12 09:55:12 BasicResourcePool         An exception occurred while acquiring a poolable resource. Will retry.
java.lang.NullPointerException
    at oracle.net.jndi.JndiAttrs.getAttrs(JndiAttrs.java:207)
    at oracle.net.resolver.AddrResolution.<init>(AddrResolution.java:198)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:219)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

hibernate 配置:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@ldaps://XXXX,cn=OOOO,dc=WWW</property>
        <property name="hibernate.connection.username">YYYY</property>
        <property name="hibernate.statement_cache.size">0</property>
        <property name="hibernate.connection.password">ZZZZZ</property>
        <property name="hibernate.c3p0.min_size">5</property>
        <property name="hibernate.c3p0.max_size">20</property>
        <property name="hibernate.c3p0.timeout">1800</property>
        <property name="hibernate.c3p0.max_statements">0</property>
        <property name="hibernate.default_schema">YYYY</property>
        <property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="hibernate.show_sql">true</property>
    </session-factory>
</hibernate-configuration>

使用的相关库:

  • ojdbc6 11.2.0.3.0
  • hibernate 3.1

问题: 依赖项包含 2 个 hibernate 版本 3.1 和 3.0 以及 ojdbc6 和 ojdbc7。 (使用 mvn dependency:tree -Dverbose 获取依赖树)

解决方案: 从依赖项中排除了其他版本的 hibernate 和 ojdbc。

            <dependency>
                <groupId>****</groupId>
                <artifactId>****</artifactId>
                <version>****</version>
                <exclusions>
                    <exclusion>
                        <groupId>hibernate</groupId>
                        <artifactId>hibernate</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>com.oracle</groupId>
                        <artifactId>ojdbc6</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

最佳答案

正如我从 Oracle FAQ 中看到的那样,您正在使用的 jdbc 驱动程序与数据库版本和 JDK8 不兼容。

What are the various supported Oracle database version vs JDBC compliant versions vs JDK version supported? enter image description here

我想这一定是你的问题。也许如果你使用 ojdbc7.jar 可能会有帮助(不确定这个原因我还没有测试过 - 很可能这会失败)

关于java - Java 8 升级后无法获得数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33676040/

相关文章:

java - hibernate 搜索: Indexed data with Ngram filter and while searching it gives incorrect result due to tokenizing while querying

java - SimpleJpaRepository 不修改持久化实体

Spring jdbc、jndi 还是独立的tomcat jdbc 连接池?

java - resultSet.getString ("TABLE_CAT") - 什么是 TABLE_CAT?

java - for 循环在已编译的类文件中转换为 do while 循环

java - 使用 Jodd(java) 框架创建 HTML/HTML5 网站

java - Mysql 和 Spring Boot

java - 为什么显示 "cannot issue executeUpdate() for SELECTs"SQLException?

java - 通过变量和资源导入将 Spring XML 转换为 JavaConfig

java - 关于基于 SOAP 的网络服务