*PROBLEM:*
The openjpa feature doesn't work on Karaf 4.0.1 when the JMS feature is also
installed. Its related to the javax.transaction package. OpenJPA can't
wire to the JTA 1.1.0 bundle, but ONLY when the JTA 1.2.0 bundle is also
installed, as required by the JMS feature. I get this exception:
ERROR: Bundle org.apache.openjpa [75] Error starting
mvn:org.apache.openjpa/openjpa/2.4.0 (org.osgi.framework.BundleException:
Activator start error in bundle org.apache.openjpa [75].)
java.lang.NoClassDefFoundError: javax/transaction/SystemException
at
org.apache.openjpa.persistence.osgi.PersistenceActivator.start(PersistenceActivator.java:61)
at
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2220)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2138)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1365)
at
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException:
javax.transaction.SystemException not found by org.apache.openjpa [75]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
*ENVIRONMENT:*
Karaf 4.0.1
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
Linux 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64
x86_64 x86_64 GNU/Linux
*TEST CASE:*
A simple test with a clean karaf 4.0.1:
$> $KARAF_HOME/bin/karaf
> exports | grep 'javax.transaction '
javax.transaction | 0.0.0 | 0 |
org.apache.felix.framework
> feature:install jpa
> exports | grep 'javax.transaction '
javax.transaction | 0.0.0 | 0 |
org.apache.felix.framework
javax.transaction | 1.2.0 | 55 |
javax.transaction-api
> feature:install openjpa
> exports | grep 'javax.transaction '
javax.transaction | 0.0.0 | 0 |
org.apache.felix.framework
javax.transaction | 1.1.0 | 72 |
org.apache.geronimo.specs.geronimo-jta_1.1_spec
> la -s | grep -i openjpa
75 | Active | 29 | 2.4.0 | org.apache.openjpa
> feature:install jms
> exports | grep 'javax.transaction '
javax.transaction | 0.0.0 | 0 |
org.apache.felix.framework
javax.transaction | 1.1.0 | 72 |
org.apache.geronimo.specs.geronimo-jta_1.1_spec
javax.transaction | 1.2.0 | 84 |
javax.transaction-api
> la -s | grep -i openjpa
75 | Active | 29 | 2.4.0 | org.apache.openjpa
> tree-show 75
Bundle org.apache.openjpa [75] is currently ACTIVE
org.apache.openjpa [75]
+- org.apache.commons.pool [69]
+- org.apache.servicemix.bundles.commons-dbcp [77]
| +- org.apache.commons.pool [69]
| +- org.apache.geronimo.specs.geronimo-jta_1.1_spec [72]
+- org.apache.xbean.asm5-shaded [79]
+- org.apache.commons.lang [68]
+- org.apache.commons.collections [67]
+- org.apache.geronimo.specs.geronimo-jms_1.1_spec [70]
| +- org.apache.geronimo.specs.geronimo-jta_1.1_spec [72]
+- org.ops4j.pax.logging.pax-logging-api [1]
| +- org.apache.karaf.services.eventadmin [6]
| +- org.apache.felix.metatype [5]
| +- org.apache.felix.configadmin [3]
+- org.apache.servicemix.bundles.ant [76]
+- org.apache.geronimo.specs.geronimo-jpa_2.0_spec [71]
+- org.apache.geronimo.specs.geronimo-jta_1.1_spec [72]
+- org.apache.geronimo.specs.geronimo-servlet_2.5_spec [73]
+- org.apache.servicemix.bundles.serp [78]
> ^D #restart karaf here
$> $KARAF_HOME/bin/karaf
ERROR: Bundle org.apache.openjpa [75] Error starting
mvn:org.apache.openjpa/openjpa/2.4.0 (org.osgi.framework.BundleException:
Activator start error in bundle org.apache.openjpa [75].)
java.lang.NoClassDefFoundError: javax/transaction/SystemException
at
org.apache.openjpa.persistence.osgi.PersistenceActivator.start(PersistenceActivator.java:61)
at
org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:697)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:2220)
at org.apache.felix.framework.Felix.startBundle(Felix.java:2138)
at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1365)
at
org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException:
javax.transaction.SystemException not found by org.apache.openjpa [75]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1558)
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1998)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 7 more
> la -s | grep -i openjpa
75 | Resolved | 29 | 2.4.0 | org.apache.openjpa
> tree-show 75
Bundle org.apache.openjpa [75] is currently RESOLVED
org.apache.openjpa [75]
+- org.apache.geronimo.specs.geronimo-jpa_2.0_spec [71]
+- org.ops4j.pax.logging.pax-logging-api [1]
| +- org.apache.karaf.services.eventadmin [6]
| +- org.apache.felix.metatype [5]
| +- org.apache.felix.configadmin [3]
+- org.apache.geronimo.specs.geronimo-servlet_2.5_spec [73]
+- org.apache.servicemix.bundles.commons-dbcp [77]
| +- javax.transaction-api [84]
| | +- javax.enterprise.cdi-api [82]
| | | +- javax.el-api [81]
| | | +- org.apache.servicemix.bundles.javax-inject [88]
| | | +- javax.interceptor-api [83]
| | +- javax.interceptor-api [83]
| +- org.apache.commons.pool [69]
+- org.apache.geronimo.specs.geronimo-jms_1.1_spec [70]
| +- javax.transaction-api [84]
+- org.apache.commons.pool [69]
+- org.apache.servicemix.bundles.ant [76]
+- org.apache.servicemix.bundles.serp [78]
+- org.apache.commons.lang [68]
+- org.apache.xbean.asm5-shaded [79]
+- org.apache.commons.collections [67]
> headers 75
...
javax.transaction;resolution:=optional;version="[1.1.0,1.2)",
javax.transaction.xa;resolution:=optional;version="[1.1.0,1.2)",
...
Notice how openjpa can't wire to the jta 1.1.0 bundle ONLY when the jta
1.2.0 bundle is installed, as required by the JMS feature!!
--
View this message in context:
http://karaf.922171.n3.nabble.com/Karaf-JMS-Feature-breaks-OpenJPA-Feature-tp4042836.html
Sent from the Karaf - User mailing list archive at Nabble.com.