Ich muss eine JDBC-Verbindung zu einer Datenbank testen. Der Java-Code zu tun, sollte so einfach sein wie:Wie verwende ich einen JDBC-Treiber von einem beliebigen Ort aus
DriverManager.getConnection("jdbc connection URL", "username", "password");
Die Treiber-Manager der entsprechenden den Treiber für die gegebene Verbindung URL Lookup werden. Allerdings muss ich in der Lage sein, den JDBC-Treiber (jar) zur Laufzeit zu laden. Ie. Ich habe nicht den JDBC-Treiber auf dem Klassenpfad der Java-Anwendung, die das Code-Schnipsel oben ausführt.
So kann ich den Treiber laden diesen Code verwenden, zum Beispiel:
URLClassLoader classLoader = new URLClassLoader(new URL[]{"jar URL"}, this.getClass().getClassLoader());
Driver driver = (Driver) Class.forName("jdbc driver class name", true, classLoader).newInstance();
Aber dann der Treiber-Manager wird es immer noch nicht abholen, wie ich es nicht sagen kann, welche Klassenlader zu verwenden. Ich habe versucht, den Kontext-Classloader des aktuellen Threads zu setzen und es funktioniert immer noch nicht.
Hat jemand eine Idee über den besten Weg, das zu erreichen?
Gibt es einen guten Grund, warum Sie den Treiber nicht auf dem Klassenpfad haben? –
Ja. Die Anwendung kann eine Verbindung zu vielen Datenbanken herstellen. Außerdem kann ich aus Lizenzgründen nicht alle Treiber bündeln. Was ich erreichen möchte, ist ein einfacher Dialog für den Benutzer, um das Glas zu laden, während die Anwendung läuft. – SaM
Dort dachte ich wieder wie ein serverseitiger Entwickler ... :) –