DriverManger.register/unregister can't work reliable in OSGi (especially with static insitilizer), thus always the DataSourceFactory should be used instead!

Am 30.04.19 um 19:43 schrieb Steinar Bang:
Christian Schneider <chris-2JE8+nH+GngJmMKNX/[email protected]>:

I see no calls to DriverManager in
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/osgi/PGBundleActivator.java

The DriverManager isn't called directly from the PGBundleActivator.

  1. DriverManager.registerDriver() is called from Driver.register()
      
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/Driver.java#L720
  2. Driver.register() is called from a static initializer in the Driver class
      
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/Driver.java#L72
  3. DriverManager.deregisterDriver() is called from Driver.deregister()
      
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/Driver.java#L737
  4. Driver.deregister() is called from the PGBundleActivator.stop() method
      
https://github.com/pgjdbc/pgjdbc/blob/master/pgjdbc/src/main/java/org/postgresql/osgi/PGBundleActivator.java#L56

It only registers and unregisters the DataSourceFactory service which looks
correct.

Yes, that bit is correct, and populates to my DS components that has
@Reference to DatasourceFactory (the old service is unbound and the
activate methods are called using the new service).

Not sure about the call to Driver.deregister though.
This might cause the issue.

See comment in the issue
  https://github.com/pgjdbc/pgjdbc/issues/1476#issuecomment-487370634


--
--
------------------
OPS4J - http://www.ops4j.org - [email protected]

--- 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to