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.