sql >> Base de Datos >  >> RDS >> Oracle

WSJDBCConnection no envuelve objetos del tipo Oracle jdbc Connection

Acabo de probar esto en WebSphere Liberty y el siguiente código funcionó para mí:

@Resource(lookup = "jdbc/oracle")
private DataSource ds;

// ...

Connection conn = ds.getConnection();
OracleConnection oracleConn = conn.unwrap(oracle.jdbc.OracleConnection.class);

Mi server.xml se ve así:

<dataSource jndiName="jdbc/oracle">
    <jdbcDriver libraryRef="oracleLib"/>
    <properties.oracle URL="${jdbc.URL}" user="${jdbc.user}" password="${jdbc.password}"/>
</dataSource>

<library id="oracleLib">
    <fileset dir="${server.config.dir}/oracle"/>
</library>

<application location="myApp.war" >
    <classloader commonLibraryRef="oracleLib"/>
</application>

Lo importante a tener en cuenta aquí es el uso de commonLibraryRef en el <classloader> elemento. Si usa privateLibraryRef no funcionará porque la aplicación y la fuente de datos definida por el servidor usarán cargadores de clases aislados para cargar las clases de Oracle JDBC.

Si esta respuesta no le resulta útil, actualice su pregunta con la configuración de su servidor.xml y también cómo está obteniendo una instancia de su DataSource .