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

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

17 Stunden ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

17 Stunden ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

1 Tag ago

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

1 Tag ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

2 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

2 Tagen ago