获取oracle.jdbc.driver.LogicalConnection,需要oracle.jdbc.OracleConnection

时间:2014-01-21 21:59:38

标签: java oracle jdbc websphere

我正在尝试连接到在WebSphere上运行的Java应用程序内的Oracle数据库。我需要能够创建一个数组描述符,以便在调用过程时使用。

代码如下所示:

Connection conn=null;
ArrayDescriptor arrayDescriptor;
Connection tmpCon = jdbcTemplate.getDataSource().getConnection();
conn =  WSCallHelper.getNativeConnection(tmpCon);
arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",conn);
IDs = new oracle.sql.ARRAY(arrayDescriptor, conn, list.toArray());

调用ArrayDescriptor.createDescriptor的行会抛出一个类强制转换异常

java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.OracleConnection
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:149)
    at oracle.sql.ArrayDescriptor.createDescriptor(ArrayDescriptor.java:115)

使用调试器完成此操作后,我可以看到conn绝对是oracle.jdbc.driver.LogicalConnection。问题是我实际上无法在我的代码中引用LogicalConnection因为该类不公开,所以我不能只做这样的事情:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((LogicalConnection)conn).getWrapper());

而且:

arrayDescriptor = ArrayDescriptor.createDescriptor("t_my_array",((oracle.jdbc.driver.OracleConnection)conn).getWrapper());

还会返回一个类强制转换异常:

java.lang.ClassCastException: oracle.jdbc.driver.LogicalConnection incompatible with oracle.jdbc.driver.OracleConnection

我需要一个OracleConnection对象,但我似乎无法从LogicalConnection获得一个返回给我的对象。有没有人见过这个?我觉得我错过了一些非常明显的东西,但也许我只需要另外一杯咖啡......

1 个答案:

答案 0 :(得分:2)

@Alex Poole指出我正确的方向。 Maven包含一个Oracle jar,版本10.2.0.1.0,而WebSphere有相同的jar,但是版本10.2.0.4.0。

修复POM以便10.2.0.1.0版本jar没有部署后,问题似乎得到解决。