Pokud byste chtěli rozbalit objekt JDBC (DataSource, Connection atd.) do rozhraní specifického pro dodavatele, ovladač JDBC v nakonfigurovaném <datSource>
musí být k dispozici zavaděči tříd aplikace. Konfigurace bude vypadat nějak takto:
<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>
Odtud můžete objekt rozbalit stejným způsobem, jakým jste to dělali předtím, konkrétně:
DataSource ds = InitialContext.doLookup("jdbc/myDS");
Connection conn = ds.getConnection();
PGConnection pgConn = conn.unwrap(org.postgresql.PGConnection.class);
K dispozici je také enableConnectionCasting
booleovský atribut na <dataSource>
konfiguraci, která automaticky zavolá unwrap po getConnection()
.
<dataSource jndiName="jdbc/myDS" enableConnectionCasting="true">
Pak je java kód o něco jednodušší:
DataSource ds = InitialContext.lookup("jdbc/indi");
PGConnection pgConn = (PGConnection) ds.getConnection();