5

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.

Gurkha
  • 1,104
  • 4
  • 20
  • 37

1 Answers1

5

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

Display Name is missing
  • 6,197
  • 3
  • 34
  • 46
  • 3
    If you are using Maven, make this jar _provided_. Also, in the Admin Console, you need to **deselect** the _Wrap Data Types_ checkbox under Connection Pool/Advanced for the Data Source. – NuAlphaMan Dec 04 '14 at 15:22