sql >> Database >  >> RDS >> PostgreSQL

hoe PostgreSQL-verbinding uit de IBM WSJdbc41Connection te halen

Als u een JDBC-object (DataSource, Connection, enz.) wilt uitpakken naar een leverancierspecifieke interface, moet u het JDBC-stuurprogramma in de geconfigureerde <datSource> moet beschikbaar zijn voor de classloader van de toepassing. De configuratie ziet er ongeveer zo uit:

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

Van daaruit kunt u het object op dezelfde manier uitpakken als voorheen, namelijk:

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

Er is ook een enableConnectionCasting boolean attribuut op <dataSource> configuratie die automatisch unwrap voor u aanroept bij getConnection() .

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

Dan is de java-code iets eenvoudiger:

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



  1. PGError:geen verbinding met de server na inactiviteit

  2. MySQL Simple Select-query is traag

  3. JSON_QUERY() versus JSON_VALUE() in SQL Server:wat is het verschil?

  4. TSQL CASE met if-vergelijking in SELECT-instructie