Prüfung des Status von Datenbankverbindungen

Eine Möglichkeit für den Umgang mit abgebrochenen Verbindungen besteht im Einsatz einer treiberspezifischen API für den Verbindungsaufbau zu einer Datenbank. Ein Beispiel ist die Oracle JDBC-API. Die OracleConnectionCacheImpl-Klasse implementiert die javax.DataSource-Schnittstelle und validiert die Verbindung jedes Mal, wenn dies gefordert wird. Außerdem ermöglicht sie eine erneute Verwendung der Verbindung, da sie diese für spätere Anfragen zwischenspeichert. Mit anderen Worten: Wenn man eine Datenbank schließt und dann einen Verbindungsaufbau zu ihr versucht, erhält man eine SQL-Ausnahme, die das Problem klar definiert. In Listing A ist ein Beispiel für eine solche DataSource-Verwendung enthalten.

Validierung der Verbindung

Eine Alternative hierzu ist die Durchführung der Verbindungsvalidierung durch den Benutzer selbst. Man kann eine Connection Factory schreiben, die eine Verbindung überprüft, bevor sie diese für Anfragen ausgibt. Es empfiehlt sich, beim Programmieren den Validierungsvorgang von der Connection Factory zu abstrahieren. Dies kann durch Anwendung der GoF Strategy-Vorlage geschehen, die eine Schnittstelle für die Verbindungsvalidierung erstellt, wie dies in Abbildung A gezeigt wird.

Klassendiagramm
Abbildung A: Klassendiagramm

Die in Listing B dargestellte AbstractDataSource-Klasse bietet die grundlegende Implementierung der DataSource-Schnittstelle, wobei zusätzlich praktische Methoden zur Einstellung und Verwendung von Verbindungseinstellungen enthalten sind, darunter die JDBC-Treiberklasse, URL, Benutzername und Passwort.

Stabile Implementierungen dieser Klasse sind JdbcDataSource (Listing C) und ValidDataSource (Listing C). Die Klasse in Listing C erstellt bei jeder Anfrage ein Verbindungsobjekt. Die Klasse in Listing E liefert eine Option zur Verbindungsvalidierung unter Nutzung des ConnectionValidator.

Der SqlConnectionValidator ist, wie in Listing F dargestellt, eine geradlinige Ausführung dieser Schnittstelle, wobei eine schnelle SQL-Abfrage an eine Verbindung erfolgt, deren Gültigkeit man überprüfen möchte. Dies geschieht durch den Aufruf der Methode validateConnection(Connection conn), die im Falle von Problemen bei der Verbindung eine SQL-Ausnahme ausgibt.

Vorteile der Validierung

Egal, welche Methode man einsetzt, entscheidend ist die Einrichtung einer gültigen Datenbank-Verbindung, vor allem bei kritischen Echtzeit-Anwendungen. Während eine herkömmliche Verbindungsvalidierung mehr Flexibilität und Unabhängigkeit von der API bietet, könnte sie im Vergleich zu einer Hersteller-API jedoch eine schlechtere Gesamt-Performance bedingen. Es bleibt zu entscheiden, ob die verbesserten Kontrollmöglichkeiten die gleichzeitige Erhöhung von Komplexität und Kosten rechtfertigen.

Themenseiten: Big Data, Datenbank, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu Prüfung des Status von Datenbankverbindungen

Kommentar hinzufügen

Kommentare sind bei diesem Artikel deaktiviert.