Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error casting T4CConnection to OracleConnection

Spring application using JNDI lookup to get datasource as following:

   @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));
    }

and getting a connection from the datasource as follows :

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



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

But when i pass that connection to StructDescriptor it throws classCastException as follows:

StructDescriptor 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)

My understanding is the getConnection() returns a T4CConnection where as OracleConnection is required. Tried couple of ways to get the oracleConnection but cant seem to get it. Any help would be appreciated.

like image 386
Gurkha Avatar asked Dec 03 '14 20:12

Gurkha


1 Answers

I believe this has to do with the contents of your war/ear file. Do not package in the Oracle driver .jar file.

Specifically, if you have ojdbc6.jar in your war file (or the equivalent) it will cause conflicts. It is fine to use that jar for compilation but you won't want it in your classpath as it is already in the Weblogic classpath by default.

See these links for similar info: here and here

like image 147
Display Name is missing Avatar answered Sep 23 '22 03:09

Display Name is missing