Hi Oliver,
I think that the Oracle driver headers are not fully correct.
Let me provide a wrapping to you as workaround.
Regards
JB
On 07/10/2021 10:52, Oliver Fürniß wrote:
Hi John,
Thanks for your response. I tried your suggestion, but it does not work
due to a wiring error when I try to install the bundle:
bundle:install -s mvn:org.ops4j.pax.jdbc/pax-jdbc-oracle/1.5.0
Bundle ID: 266
Error executing command: Error installing bundles:
Unable to start bundle mvn:org.ops4j.pax.jdbc/pax-jdbc-oracle/1.5.0:
org.osgi.framework.BundleException: Unable to resolve
org.ops4j.pax.jdbc.oracle [266](R 266.0): missing requirement
[org.ops4j.pax.jdbc.oracle [266](R 266.0)] osgi.wiring.package;
(osgi.wiring.package=oracle.jdbc.datasource.impl) Unresolved
requirements: [[org.ops4j.pax.jdbc.oracle [266](R 266.0)]
osgi.wiring.package; (osgi.wiring.package=oracle.jdbc.datasource.impl)]
In the pax-jdbc-oracle-1.5.0.jar/META-INF/MANIFEST.MF is an
Import-Package statement for the "oracle.jdbc.datasource.impl" package,
but this package does not exist in older Oracle JDBC drivers. Just in
the latest. :-(
Oliver
Am Mi., 6. Okt. 2021 um 17:24 Uhr schrieb John Taylor
<[email protected] <mailto:[email protected]>>:
Hi Oliver,
I had the same problem with mssql-jdbc.
But it's not exactly the same because the pax-jdbc-mssql feature
only depends on pax-jdbc-spec and only includes the driver
mvn:com.microsoft. . . And that means there's no wrapper around
the driver needed for osgi and nothing is needed specially to
configure it from pax.
But the pax-jdb-oracle feature includes the driver from oracle
(wrapped as wrap:mvn: because it's not an osgi bundle) and a wrapper
from pax mvn:org.ops4j.pax.jdbc/pax-jdbc-oracle/1.5.0
So you could try not installing the bundle and just install the
pax-jdbc-spec and the mvn:org.ops4j.pax.jdbc bundle along with the
driver jar you put in deploy.
-John
On Wed, Oct 6, 2021 at 11:13 AM Oliver Fürniß
<[email protected] <mailto:[email protected]>> wrote:
Hello,
I'm trying to upgrade from Karaf 4.2.8 to 4.3.3.
With 4.2.8 I was able to place the required Oracle driver to the
deploy-folder and do a "feature:install pax-jdbc-oracle". With
4.3.3 it seems to be a little bit different. When I place the
ojdbc6.jar or ojdbc7.jar or ojdbc8.jar in the deploy folder I
will get the error below (at the end) after "feature:install
pax-jdbc-oracle".
It works when I do not place a specific Oracle driver to the
deploy folder and just do "feature:install pax-jdbc-oracle". In
this case it installs the latest Oracle driver by using maven.
This is different to 4.2.8 and not the expected behaviour. IMO
the latest Oracle driver cannot be used for all Oracle versions.
Even Oracle provides specific downloads of their JDBC driver for
different DB versions:
https://www.oracle.com/de/database/technologies/appdev/jdbc-downloads.html
<https://www.oracle.com/de/database/technologies/appdev/jdbc-downloads.html>
In the ops4j features.xml file details is written, that "This
feature requires actual Oracle JDBC driver installed",
which conflicts with the auto bundle dependency installation of
the latest Oracle driver. This line does not exist in 4.2.8.
<feature name="pax-jdbc-oracle" description="Provides JDBC
Oracle DataSourceFactory" version="${project.version}">
<details>This feature requires actual Oracle JDBC driver
installed</details>
<feature>pax-jdbc-spec</feature>
<bundle
dependency="true">wrap:mvn:com.oracle.database.jdbc/ojdbc8/${version.com.oracle.database.jdbc}</bundle>
<bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-oracle/${project.version}</bundle>
</feature>
Is there a reason why the latest and not with all Oracle
versions compatible driver gets installed? Am I able to install
somehow a different version of the Oracle driver?
All the best,
Oliver
karaf@root()> feature:install pax-jdbc-oracle
org.apache.karaf.features.internal.util.MultiException: Error
restarting bundles:
Activator start error in bundle org.ops4j.pax.jdbc.oracle [223].
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.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Suppressed: org.osgi.framework.BundleException: Activator start
error in bundle org.ops4j.pax.jdbc.oracle [223].
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2452)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)
at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)
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)
... 6 more
Caused by: java.lang.NoClassDefFoundError:
oracle/jdbc/internal/Monitor
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at
java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2312)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2130)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2064)
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1533)
at
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1343)
at
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1586)
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1516)
at
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at org.ops4j.pax.jdbc.oracle.impl.Activator.start(Activator.java:29)
at
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:698)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2402)
... 12 more
Caused by: java.lang.ClassNotFoundException:
oracle.jdbc.internal.Monitor not found by ojdbc7.jar [222]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1565)
at
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at
org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1343)
at
org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1586)
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1516)
at
org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:78)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1950)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 30 more
Error executing command: Error restarting bundles:
Activator start error in bundle org.ops4j.pax.jdbc.oracle [223].