I already talked to the openjpa people.
The problem is that they only accept jta 1.1.0 while they could
perfectly work with jta 1.2 too.
https://issues.apache.org/jira/browse/OPENJPA-2607
It is not only an issue with jms but also with Aries
transaction.blueprint 2.0.0 which requires jta 1.2 and currently does
not work with openjpa.
Mark seems to be positive about the change but the issue is still
unresolved.
So the question is if we should provide a patched version ourself or
wait for the openjpa people to change their import and do a new release.
Christian
On 02.10.2015 07:24, Achim Nierbeck wrote:
Hi,
well after looking at the headers of the openjpa and geronimo-jms
bundle it's quite clear why that happened.
The openjpa bundle does have a optional dependency to 1.1.0 of JTA
while the geronimo-jms bundle is
using any JTA package 1.1.0 or higher. Therefore the resolver will
bind the highest available package of the jta package
to the JMS. So basically it's an issue in the dependency chain of the
two projects. OTH for JMS it might be ok to
have a 1.2.0 dependency.
So what can we do about that?
one idea would be to patch the openjpa bundle to actually have a
required dependency for jta 1.1.0, but this most likely will clash on
the resolver
level already as you'll end up with two dependency chains.
my second Idea to actually use regions for this to have some bigger
isolation on this didn't work out. Actually it's some other issues
one runs into. Maybe regions is broken, need to investigate that.
regards, Achim
p.s. to have regions you would do the following:
feature:install -g root/jpa jpa openjpa
for the jpa bundle
and
feature:install -g root/jms jms transaction-api
for the jms bundles it seems to work in the beginning, but now you're
missing some other dependencies which are actually already installed
with the jpa feature.
2015-10-01 23:57 GMT+02:00 John Ellinwood <[email protected]
<mailto:[email protected]>>:
*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.
--
Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/>
Committer & Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
Software Architect / Project Manager / Scrum Master
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com