Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

WSJDBCConnection não envolve objetos do tipo Oracle jdbc Connection


Acabei de testar isso no WebSphere Liberty e o seguinte código funcionou para mim:
@Resource(lookup = "jdbc/oracle")
private DataSource ds;

// ...

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

Meu server.xml está assim:
<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>

O importante a ser observado aqui é o uso de commonLibraryRef no <classloader> elemento. Se você usar privateLibraryRef ele não funcionará porque o aplicativo e a fonte de dados definida pelo servidor usarão carregadores de classe isolados para carregar as classes Oracle JDBC.

Se esta resposta não for útil para você, atualize sua pergunta com a configuração do seu server.xml e também como você está obtendo uma instância de seu DataSource .