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

comment déballer la connexion PostgreSQL à partir d'IBM WSJdbc41Connection

Si vous souhaitez désencapsuler un objet JDBC (DataSource, Connection, etc.) vers une interface spécifique au fournisseur, le pilote JDBC dans le <datSource> configuré doit être disponible pour le chargeur de classe de l'application. La configuration ressemblera à ceci :

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

À partir de là, vous pouvez déballer l'objet de la même manière que vous le faisiez auparavant, à savoir :

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

En outre, il existe un enableConnectionCasting attribut booléen sur <dataSource> configuration qui appellera automatiquement unwrap pour vous lors de getConnection() .

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

Ensuite, le code java est un peu plus simple :

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