Hallo Zusammen,
da ich nun die Datenbanktreiber für meine Anwendung nicht mehr direkt mitliefern möchte muss ich diese nun irgendwie nachladen. Es gibt eine Properties, in der sich die Treiberklasse und auch die Bezeichnung des Jar-Files befinden. Ein Benutzer kann nun seinen Datenbanktreiber in das Lib-Verzeichnis packen und die Properties anpassen. Nun muss eben der Treiber dynamisch geladen und dann Hibernate zur Verfügung gestellt werden.
Ich hab hier mal einen Codeabschnitt gefunden:
Dies scheint schon mal zu funktionieren, nur wenn ich mir dann die Hibernate-Configuration zusammenbauen möchte, so erhalte ich plötzlich Exceptions, dass diese Klassen bzw. Treiber nicht gefunden werden können.
Bisher habe ich die DB-Treiber immer in den Classpath meiner Anwendung gelegt, also alle mitgeliefert, und dann über
eingebunden. Das scheint aber jetzt nicht mehr zu funktionieren.
Hat jemand eine Idee, wie ich so etwas bewerkstelligen kann?
Viele Grüße
Sascha
da ich nun die Datenbanktreiber für meine Anwendung nicht mehr direkt mitliefern möchte muss ich diese nun irgendwie nachladen. Es gibt eine Properties, in der sich die Treiberklasse und auch die Bezeichnung des Jar-Files befinden. Ein Benutzer kann nun seinen Datenbanktreiber in das Lib-Verzeichnis packen und die Properties anpassen. Nun muss eben der Treiber dynamisch geladen und dann Hibernate zur Verfügung gestellt werden.
Ich hab hier mal einen Codeabschnitt gefunden:
Code:
URL u = new URL("jar:file:/" + jarPath + "!/");
String classname = DatabaseProperties.getProperties().get("db.driver").toString();
URLClassLoader ucl = new URLClassLoader(new URL[] { u });
Driver d = (Driver) Class.forName(classname, true, ucl).newInstance();
DriverManager.registerDriver(new JDBCDriverWrapper(d));
Dies scheint schon mal zu funktionieren, nur wenn ich mir dann die Hibernate-Configuration zusammenbauen möchte, so erhalte ich plötzlich Exceptions, dass diese Klassen bzw. Treiber nicht gefunden werden können.
Bisher habe ich die DB-Treiber immer in den Classpath meiner Anwendung gelegt, also alle mitgeliefert, und dann über
Code:
config.setProperty("hibernate.connection.driver_class", "xyp");
eingebunden. Das scheint aber jetzt nicht mehr zu funktionieren.
Hat jemand eine Idee, wie ich so etwas bewerkstelligen kann?
Viele Grüße
Sascha