java - 将 java.sql.Connection 转换为 Oracle Connection

标签 java oracle connection wildfly-10

我有一个 Java 应用程序,我在其中调用 Oracle 过程并将 Oracle 数组作为参数传递。我的申请是 EAR。

在 Java 7 和 Jboss 7 上一切正常,但是当我们升级到 Java 8 和 Wildfly 10 时,我们得到了这个错误:

 java.lang.ClassCastException:
 org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 cannot be cast
 to org.jboss.jca.adapters.jdbc.WrappedConnection

经过一番研究,我将代码更改为:

WrappedConnectionJDK7  wc = (WrappedConnectionJDK7 ) conn;
OracleConnection oraconn = (OracleConnection) wc.getUnderlyingConnection();

并且我在 pom.xml 中添加了依赖

<dependency>
  <groupId>org.jboss.ironjacamar</groupId>
  <artifactId>ironjacamar-jdbc</artifactId>
  <version>1.3.2.Final</version>
</dependency>

但我仍然得到这个错误:

java.lang.ClassCastException: 
org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7 cannot be cast to 
org.jboss.jca.adapters.jdbc.jdk7.WrappedConnectionJDK7

最佳答案

我之前不得不解开类似的连接(但不完全相同的包装类)并使用过:

OracleConnection oconn;
if ( conn.isWrapperFor( OracleConnection.class ) )
{
  oconn = (OracleConnection) conn.unwrap( OracleConnection.class );
}
else
{
  throw new SQLException( "Not an Oracle Connection" );
}

关于java - 将 java.sql.Connection 转换为 Oracle Connection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47308853/

相关文章:

java - 无法使用Jsoup获取数据

java - Lambda 表达式与方法引用

java - Junit测试中如何获取服务对象?

C++ sleep() 中断程序

java - Spring分页,如何修改Uri中的参数

oracle - 我可以在哪些数据类型上使用 Oracle PL/SQL RANGE 子句来约束变量?

sql - 在 PL/SQL 中完成的问题的解决方案在 SQL 中会是什么样子?

java - 将.SQLJ迁移到netbeans中的maven项目

java - Java与MYSQL服务器的连接

sql-server - SSIS Excel 连接管理器错误