OJDBC 驱动程序兼容 Oracle 10g 和 Java 1.8

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

我有一个相当琐碎的问题。在我们的项目中,我们使用 Oracle 10g 作为数据库,使用 Java 1.8 作为语言。谁能建议我哪种 JDBC 驱动程序适合这种情况?

在以下链接的 Oracle 文档中: http://www.oracle.com/technetwork/apps-tech/jdbc-10201-088211.html 我发现应该使用ojdbc14.jar。然而,据说它是使用 JDK 1.4 和 1.5 编译的类。那么使用 JDK 1.8 时我应该使用相同的驱动程序吗?

java jdbc oracle10g
2个回答
2
投票

您可以尝试使用

ojdbc14.jar
,但它不支持 JDBC 4 (Java 6)、JDBC 4.1 (Java 7) 和 JDBC 4.2 (Java 8) 中引入的方法。因为 Java 强调向后兼容性,所以您很可能能够打开数据库连接,但是:

  1. 如果您使用 JDBC 4+ 中引入的方法,代码将在运行时抛出

    LinkageError
    。该代码将使用 JDBC 4.2 (Java 8) 进行编译,但这些方法在运行时不可用。

  2. 您可能会遇到低级别功能的奇怪行为,例如语句缓存和行获取在 11g

    ojdbc6.jar
    中被修改了几次。我什至不确定这个功能在旧版中如何工作
    ojdbc14.jar

这是一个非常不寻常的设置,我认为这是不可取的,您想要测试它。看看它是否有效的唯一方法就是尝试一下。


0
投票

我在 jdk1.8、tomcat9、Oracle 10g 上也面临同样的错误。有人可以帮助兼容的 ojdbc 库以及对以下连接池错误的任何建议吗?

  • /tomcat9/conf/ 中的 context.xml 配置如下

资源名称=“jdbc/AppConnectionDS”auth=“Container”类型=“javax.sql.DataSource”logAbandoned=“true”maxTotal=“25”maxIdle=“10”maxWaitMillis=“-1”用户名=“XXX”removeAbandonedOnBorrow =“true”removeAbandonedTimeout=“60”密码=“*****”driverClassName=“oracle.jdbc.OracleDriver”url=“jdbc:oracle:thin:@xxxx”validationQuery=“从双重中选择1”

通过以下代码在 2024-01-16 21:50:41 +0400 创建的池化对象尚未返回到池中: org.apache.tomcat.dbcp.pool2.impl.ThrowableCallStack$快照 在 org.apache.tomcat.dbcp.pool2.impl.ThrowableCallStack.fillInStackTrace(ThrowableCallStack.java:66) 在 org.apache.tomcat.dbcp.pool2.impl.DefaultPooledObject.allocate(DefaultPooledObject.java:78) 在 org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:318) 在 org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:223) 在 org.apache.tomcat.dbcp.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:141) 在org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:731)

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