Oracle
 sql >> Datenbank >  >> RDS >> Oracle

WSJDBCConnection umschließt keine Objekte des Typs Oracle jdbc Connection

Ich habe dies gerade auf WebSphere Liberty getestet und der folgende Code hat für mich funktioniert:

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

// ...

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

Meine server.xml sieht so aus:

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

Wichtig ist hier die Verwendung von commonLibraryRef auf dem <classloader> Element. Wenn Sie privateLibraryRef verwenden es wird nicht funktionieren, da die App und die serverdefinierte Datenquelle isolierte Classloader verwenden, um die Oracle JDBC-Klassen zu laden.

Wenn diese Antwort für Sie nicht hilfreich ist, aktualisieren Sie bitte Ihre Frage mit Ihrer server.xml-Konfiguration und auch, wie Sie eine Instanz Ihrer DataSource erhalten .