将 T4CConnection 转换为 OracleConnection 时出错

2024-03-05

Spring应用程序使用JNDI查找来获取数据源,如下所示:

   @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,如下所示:

结构描述符 desc1 = StructDescriptor.createDescriptor("MSAF_DBA.AMOUNT_DUE_OBJ",conn);

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但似乎无法得到它。任何帮助,将不胜感激。


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

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

请参阅这些链接以获取类似信息:here https://developer.jboss.org/thread/205507?tstart=0 and here http://ravivedala.blogspot.com/2008/03/oracle-10g-passing-arrays-to-database.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 T4CConnection 转换为 OracleConnection 时出错 的相关文章

随机推荐