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.


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.

Page: 1 2

ZDNet.de Redaktion

Recent Posts

Apple meldet Umsatz- und Gewinnrückgang im zweiten Fiskalquartal

iPhones und iPads belasten das Ergebnis. Außerdem schwächelt Apple im gesamten asiatischen Raum inklusive China…

3 Tagen ago

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

3 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

3 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

4 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

5 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

5 Tagen ago