将JDBCConnection转换为OracleConnection

我有一段代码在我的spring-mvc项目中的Jboss7.1.0EAP中运行存储过程时失败,该项目连接到Oracle11g非RAC。 我已经在JBoss独立版中使用过ojdbc14.jar

protected ARRAY registerOracleArray(String typeName,Connection connection,Object[] object) throws SQLException {
 System.out.println("Entered here");
 OracleConnection oracleConnection = null;
  if (connection.isWrapperFor(OracleConnection.class)) {
  oracleConnection = connection.unwrap(OracleConnection.class);
  }
 String inTypeName = "TBCAM." + typeName.toUpperCase();
 ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor(
   inTypeName,oracleConnection);
 return new ARRAY(arrayDescriptor,oracleConnection,object);
}

错误进入日志:

  

错误消息:-java.util.concurrent.ExecutionException:java.lang.AbstractMethodError:
  oracle.jdbc.driver.T4CConnection.isWrapperFor(Ljava / lang / Class;)Z

lshongbo 回答:将JDBCConnection转换为OracleConnection

如前所述,您使用的是旧的ojdbc14驱动程序。 获取更新的版本,例如在https://www.oracle.com/database/technologies/jdbc-drivers-12c-downloads.html

不要被ojdbc14中的14激怒,它并不比ojdbc6或ojdbc7更新。该数字指的是Java版本(因此14表示1.4)。

,

•使用的Oracle jar存在兼容性问题。 •同样,从JBOSS7数据源池返回的数据库连接对象的类型为org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8。这不是预期的对象,并将其强制转换为Oracle连接对象会引发错误。

应用的解决方案: •使用ojdbc7.jar将jar升级到Oracle7 •不是从JBOSS池获取数据库连接,而是从JDBC创建连接。

本文链接:https://www.f2er.com/3156906.html

大家都在问