我有一个相当琐碎的问题。在我们的项目中,我们使用 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 时我应该使用相同的驱动程序吗?
您可以尝试使用
ojdbc14.jar
,但它不支持 JDBC 4 (Java 6)、JDBC 4.1 (Java 7) 和 JDBC 4.2 (Java 8) 中引入的方法。因为 Java 强调向后兼容性,所以您很可能能够打开数据库连接,但是:
如果您使用 JDBC 4+ 中引入的方法,代码将在运行时抛出
LinkageError
。该代码将使用 JDBC 4.2 (Java 8) 进行编译,但这些方法在运行时不可用。您可能会遇到低级别功能的奇怪行为,例如语句缓存和行获取在 11g
ojdbc6.jar
中被修改了几次。我什至不确定这个功能在旧版中如何工作ojdbc14.jar
。这是一个非常不寻常的设置,我认为这是不可取的,您想要测试它。看看它是否有效的唯一方法就是尝试一下。
我在 jdk1.8、tomcat9、Oracle 10g 上也面临同样的错误。有人可以帮助兼容的 ojdbc 库以及对以下连接池错误的任何建议吗?
资源名称=“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)