PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

wie man die PostgreSQL-Verbindung von der IBM WSJdbc41Connection entpackt

Wenn Sie ein JDBC-Objekt (DataSource, Connection usw.) in eine herstellerspezifische Schnittstelle entpacken möchten, muss der JDBC-Treiber in der konfigurierten Datei <datSource> muss für den Klassenlader der Anwendung verfügbar sein. Die Konfiguration sieht in etwa so aus:

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

Von dort aus können Sie das Objekt auf die gleiche Weise wie zuvor auspacken, nämlich:

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

Außerdem gibt es ein enableConnectionCasting boolesches Attribut auf <dataSource> Konfiguration, die bei getConnection() automatisch unwrap für Sie aufruft .

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

Dann ist der Java-Code etwas einfacher:

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