I ran into a problem with the PostgreSQL JDBC driver running as an OSGi
bundle in karaf:
 https://github.com/pgjdbc/pgjdbc/issues/1476

In short: the bundle works before restart, but after restart
DataSouce.getConnection() is unable to find the JDBC driver.

I've debugged through what happens, and the PGBundleActivator() seems to
do the right thing:
 1. Call DriverManager.registerDriver() on bundle start
 2. Call DriverManagerderegisterDriver() on bundle stop
 3. Call DriverManager.registerDriver() again when the bundle restarts
(all of these in rt.jar)

However, after the second DriverManager.registerDriver() the 
DriverManager.getConnection(String url, java.util.Properties info, Class<?> 
caller)
method fails because DriverManager.isDriverAllowed(Driver driver, ClassLoader 
classLoader)
fails (all of these in rt.jar).

And what fails in the isDriverAllowed() method is the comparison between
driver.getClass() and Class.forName(driver.getClass().getName()) fails.

Sounds like an OSGi classloader issue...?

How does the pax-jdbc bundles providing a DataSourceFactory handle JDBC
driver registration and unregistration?

Thanks!


- Steinar

-- 
-- 
------------------
OPS4J - http://www.ops4j.org - ops4j@googlegroups.com

--- 
You received this message because you are subscribed to the Google Groups 
"OPS4J" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ops4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to