Hi,
ich möchte die jdbc-Jar die ich für Hibernate benutze erst zur Laufzeit über einen JarClassLoader laden. Da ich Hibernate nicht direkt den JarClassLoader mitgeben kann setzte ich über
Thread.currentThread().setContextClassLoader(jarClassLoader);
als ThreadClassLoader. Für Hibernate an sich ist das kein Problem, da in
ReflectHelper.classForName(String name)
Hibernate den ThreadClassLoader benützt um den jdbc-Treiber zu laden. Allerdings benützt Hibernate auch noch die Klasse java.sql.DriverManager welche nicht den ThreadClassLoader benützt und dadurch auch nicht an den jdbc-Treiber rankommt.
So bekomme ich folgende Exception:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174)
...
Gibt es einen Weg um eigene ClassLoader als SystemClassLoader einzuhängen?
Oder irgend eine andere Lösung die ich nicht sehe.
Vielen Dank im Vorraus.
|