PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

como desempacotar a conexão PostgreSQL do IBM WSJdbc41Connection


Se você quiser desempacotar um objeto JDBC (DataSource, Connection, etc.) para uma interface específica do fornecedor, o driver JDBC no <datSource> configurado deve estar disponível para o carregador de classe do aplicativo. A configuração ficará mais ou menos assim:
<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>

A partir daí, você pode desembrulhar o objeto da mesma forma que estava fazendo antes, a saber:
DataSource ds = InitialContext.doLookup("jdbc/myDS");
Connection conn = ds.getConnection();
PGConnection pgConn = conn.unwrap(org.postgresql.PGConnection.class);

Além disso, há um enableConnectionCasting atributo booleano em <dataSource> configuração que chamará automaticamente o unwrap para você em getConnection() .
<dataSource jndiName="jdbc/myDS" enableConnectionCasting="true">

Então o código java é um pouco mais simples:
DataSource ds = InitialContext.lookup("jdbc/indi");
PGConnection pgConn = (PGConnection) ds.getConnection();