Wie Sie feststellen, ob java.sql.Die Verbindung ist gültig mit PostgreSQL JDBC4
Ich versuche schreiben, einen test für eine Methode gibt ein java.sql.Verbindung eine Verbindung zu einer PostgreSQL.
Mein test ist sehr einfach:
@Test
public void connectionFactoryShouldReturnOpenConnection() throws Exception {
Connection conn = ConnectionFactory.getConnection();
assertTrue(conn.isValid(2));
}
Den isValid
Aufruf schlägt fehl, wenn:
org.postgresql.util.PSQLException: Method org.postgresql.jdbc4.Jdbc4Connection.isValid(int) is not yet implemented.
at org.postgresql.Driver.notImplemented(Driver.java:753)
at org.postgresql.jdbc4.AbstractJdbc4Connection.isValid(AbstractJdbc4Connection.java:109)
at org.postgresql.jdbc4.Jdbc4Connection.isValid(Jdbc4Connection.java:21)
Was ist Los? Sicherlich gibt es eine PostgreSQL-JDBC-Treiber implementiert die Methoden von Java 1.6 wie isValid()
?
Hier die details zum Treiber, den ich verwende:
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version>
- Ich Frage mich, ob dies ein Fall von: es existierte nicht, bevor die 1.6, also alle Verbindungs-pool-Implementierungen unterstützen die Angabe einer Anweisung ausführen, um die Verbindung zu testen. Jetzt, da Sie die verbindungspools für alle Unterstützung, dass gibt es nicht viel Nachfrage für Treiber, support-die neue Methode? Irgendwie pervers, aber so ist das Leben.
- Ich vermute, dass Sie korrekt sind.
- Es scheint, dass isValid() implementiert ab version 9.2.1000 (veröffentlicht September 27, 2012) der Fahrer (ich entschuldige mich für den Doppel-Meldung)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Führen Sie eine einfache Abfrage, wenn es funktioniert, ist es gültig. Wenn nicht, ist es nicht.
Und durch einfache Abfrage, die ich so etwas bedeuten wie:
Wirklich einfach.
Aus der postresql-Treiber source code die
AbstractJdbc4Connection.isValid()
wirft diese exception aufgerufen, wenn: