PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

come annullare il wrapping della connessione PostgreSQL da IBM WSJdbc41Connection

Se desideri annullare il wrapping di un oggetto JDBC (DataSource, Connection, ecc.) su un'interfaccia specifica del fornitore, il driver JDBC nel <datSource> configurato deve essere disponibile per il classloader dell'applicazione. La configurazione sarà simile a questa:

<application location="oraclejdbcfat.war" >
    <!-- expose the 'DBLib' containing the JDBC driver jar to the app classloader -->
    <classloader commonLibraryRef="DBLib"/>
</application>

<library id="DBLib">
    <fileset dir="${server.config.dir}/postgresql/" includes="*.jar"/>
</library>

<dataSource jndiName="jdbc/myDS">
    <jdbcDriver libraryRef="DBLib"/>
    <properties .../>
</dataSource>

Da lì, puoi scartare l'oggetto nello stesso modo in cui stavi facendo prima, ovvero:

DataSource ds = InitialContext.doLookup("jdbc/myDS");
Connection conn = ds.getConnection();
PGConnection pgConn = conn.unwrap(org.postgresql.PGConnection.class);

Inoltre, c'è un enableConnectionCasting attributo booleano su <dataSource> configurazione che chiamerà automaticamente unwrap per te su getConnection() .

<dataSource jndiName="jdbc/myDS" enableConnectionCasting="true">

Quindi il codice java è un po' più semplice:

DataSource ds = InitialContext.lookup("jdbc/indi");
PGConnection pgConn = (PGConnection) ds.getConnection();