将T4CConnection强制转换为OracleConnection时出错

时间:2014-12-03 20:53:33

标签: java oracle11g weblogic12c

使用JNDI查找的Spring应用程序获取数据源如下:

   @Bean(name = "dataSource1", destroyMethod = StringUtils.EMPTY)
    public DataSource dataSource() {
        final JndiDataSourceLookup lookup = new JndiDataSourceLookup();
        lookup.setResourceRef(true);

        return lookup.getDataSource(this.environment.getProperty(Constants.DB_JNDI_NAME_ES));
    }

并从数据源获取连接,如下所示:

@Autowired
@Qualifier("dataSource1")
private DataSource ds;



 Connection conn = null;
 conn = this.ds.getConnection();

但是当我将该连接传递给StructDescriptor时,它会抛出classCastException,如下所示:

  

StructDescriptor desc1 =   StructDescriptor.createDescriptor(" MSAF_DBA.AMOUNT_DUE_OBJ",康涅狄格州);

java.lang.ClassCastException: weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection cannot be cast to oracle.jdbc.OracleConnection
    at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:101)
    at oracle.sql.StructDescriptor.createDescriptor(StructDescriptor.java:72)
    at com.ceiwc.es.policyholder.dao.PolicyHolderDaoImpl.getAmountDue(PolicyHolderDaoImpl.java:290)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)

我的理解是getConnection()返回T4CConnection,其中OracleConnection是必需的。尝试了几种方法来获得oracleConnection但似乎无法得到它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

我认为这与你的war / ear文件的内容有关。不要打包在Oracle驱动程序.jar文件中。

具体来说,如果您的war文件(或等效文件)中有ojdbc6.jar,则会导致冲突。可以使用该jar进行编译,但是你不希望它在你的类路径中,因为默认情况下它已经在Weblogic类路径中了。

请参阅以下链接获取类似信息:herehere