Oracle
 sql >> Base de données >  >> RDS >> Oracle

WSJDBCConnection n'encapsule pas les objets de type Oracle jdbc Connection

Je viens de tester cela sur WebSphere Liberty et le code suivant a fonctionné pour moi :

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

// ...

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

Mon server.xml ressemble à ceci :

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

La chose importante à noter ici est l'utilisation de commonLibraryRef sur le <classloader> élément. Si vous utilisez privateLibraryRef cela ne fonctionnera pas car l'application et la source de données définie par le serveur utiliseront des chargeurs de classe isolés pour charger les classes Oracle JDBC.

Si cette réponse ne vous est pas utile, veuillez mettre à jour votre question avec votre configuration server.xml, et également comment vous obtenez une instance de votre DataSource .