Pax-Jdbc missing org.apache.derby.jdbc.ReferenceableDataSource

6 views
Skip to first unread message

Bengt Rodehav

unread,
Dec 6, 2023, 6:34:55 AM12/6/23
to op...@googlegroups.com
I am using the Derby database with pax-jdbc. I am using pax-jdbc version 1.5.6. I'm trying to upgrade Derby from 10.14.2.0 to 10.16.1.1.

I get the following stacktrace:

2023-12-06T10:32:41,650 | ERROR | activator-1-thread-2 | BootFeaturesInstaller            | 19 - org.apache.karaf.features.core - 4.4.4 | Error installing boot features
org.apache.karaf.features.internal.util.MultiException: Error restarting bundles:
Activator start error in bundle org.ops4j.pax.jdbc.derby [188].
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1049) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
Suppressed: org.osgi.framework.BundleException: Activator start error in bundle org.ops4j.pax.jdbc.derby [188].
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2479) ~[?:?]
at org.apache.felix.framework.Felix.startBundle(Felix.java:2335) ~[?:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:1006) ~[?:?]
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:992) ~[?:?]
at org.apache.karaf.features.internal.service.BundleInstallSupportImpl.startBundle(BundleInstallSupportImpl.java:165) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1160) ~[?:?]
at org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1041) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069) ~[?:?]
at org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) [?:?]
at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.NoClassDefFoundError: org/apache/derby/jdbc/ReferenceableDataSource
at org.ops4j.pax.jdbc.derby.impl.Activator.start(Activator.java:30) ~[?:?]
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849) ~[?:?]
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429) ~[?:?]
... 12 more
Caused by: java.lang.ClassNotFoundException: org.apache.derby.jdbc.ReferenceableDataSource not found by derby [27]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1358) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1612) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1528) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79) ~[?:?]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
at org.ops4j.pax.jdbc.derby.impl.Activator.start(Activator.java:30) ~[?:?]
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849) ~[?:?]
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429) ~[?:?]
... 12 more

It seems like the Derby bundle no longer contains the package org.apache.derby.jdbc which pax-jdbc relies on.

Is there a newer version of pax-jdbc that works with newer versions of Derby?

/Bengt

Grzegorz Grzybek

unread,
Dec 6, 2023, 6:56:17 AM12/6/23
to op...@googlegroups.com
Hello

Looks like Pax JDBC need to be refreshed. I've deliberately kept the old version. See https://github.com/ops4j/org.ops4j.pax.jdbc/blob/main/pom.xml#L210-L211:

<!-- 10.15.x is for JDK11+ -->
<version.org.apache.derby>10.14.2.0</version.org.apache.derby>

because Pax JDBC 1.5.x is still for JDK8+....

But feel free to contribute an update - probably it should be Pax JDBC 2.0, but I didn't think much about this (no free time at the end of 2023...)

regards
Grzegorz Grzybek

--
--
------------------
OPS4J - http://www.ops4j.org - op...@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+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ops4j/CAJ0TPGKd%2B_x_trp6MYg7yckRf_TNn8MB%3DC5Vq5n0J4W8aA_%3DhQ%40mail.gmail.com.

Bengt Rodehav

unread,
Dec 6, 2023, 11:43:30 AM12/6/23
to op...@googlegroups.com
It seems like the org.apache.derby.jdbc package have been moved from the derby jar to the derbytools jar. I added this to my feature descriptor to make it work:

    <bundle>wrap:mvn:org.apache.derby/derbytools/10.16.1.1$Fragment-Host=derby&amp;Export-Package=org.apache.derby.jdbc</bundle>

I had to use wrap since the derbytools jar was not a proper OSGi bundle. I also had to make it a fragment to the derby bundle since it was hard to get it to work otherwise. I guess this workaround works well enough.

/Bengt

Reply all
Reply to author
Forward
0 new messages