FWIW, I rebundled OpenJPA with the
javax.transaction/javax.transaction-api/1.2 dependency & I am now able
to successfully connect to the database.
Thanks again,
Jason
On 11/30/2015 10:56 AM, Christian Schneider wrote:
Ah .. sorry forgot that you use openjpa. This might be difficult as
openjpa is incompatible to jta 1.2 which the transaction.blueprint
2.0.0 requires.
In this case you will probably need to create your own transaction
feature that skips the 2.0.0 version and only relies on jta 1.1.
I guess because of openjpa karaf installed jta 1.1 and 1.2.
Unfortunately it does not work to install both.
Another option would be to rebundle openjpa as in fact it is
compatible to jta 1.2 and only the import package version range is too
small. As the openjpa guys have still not fixed this
I wonder if we should even do the rebundling at karaf or servicemix.
On the other hand I still hope that they fix this.
Christian
On 30.11.2015 16:47, Jason Reilly wrote:
I gave that a whirl...specifically, I changed the bootFeatures to the
following:
<feature>jdbc</feature>
<feature>transaction</feature>
<feature>jpa</feature>
<feature>openjpa/${openjpa.version}</feature>
<feature>hearsay-commons</feature>
<!-- <feature>hearsay-dao</feature> -->
Upon startup of the custom distro, I see the following from a list
command:
151 | Resolved | 80 | 2.4.0 | OpenJPA Aggregate Jar
There is an exception in the karaf.log:
org.apache.karaf.features.internal.util.MultiException: Error
restarting bundles
at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:844)[7:org.apache.karaf.features.core:4.0.3]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1079)[7:org.apache.karaf.features.core:4.0.3]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl$1.call(FeaturesServiceImpl.java:975)[7:org.apache.karaf.features.core:4.0.3]
at
java.util.concurrent.FutureTask.run(FutureTask.java:266)[:1.8.0_45]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[:1.8.0_45]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)[:1.8.0_45]
at java.lang.Thread.run(Thread.java:745)[:1.8.0_45]
Caused by: org.osgi.framework.BundleException: Activator start error
in bundle org.apache.openjpa [151].
at
org.apache.felix.framework.Felix.activateBundle(Felix.java:2276)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.felix.framework.Felix.startBundle(Felix.java:2144)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.felix.framework.BundleImpl.start(BundleImpl.java:984)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.startBundle(FeaturesServiceImpl.java:1189)[7:org.apache.karaf.features.core:4.0.3]
at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:836)[7:org.apache.karaf.features.core:4.0.3]
... 6 more
Caused by: 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:2226)
... 11 more
Caused by: java.lang.ClassNotFoundException:
javax.transaction.SystemException not found by org.apache.openjpa [151]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)[org.apache.felix.framework-5.4.0.jar:]
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)[org.apache.felix.framework-5.4.0.jar:]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)[:1.8.0_45]
However, the transaction packages are visible:
karaf@root()> exports | grep javax.transaction
javax.transaction.xa | 0.0.0 | 0 |
org.apache.felix.framework
javax.transaction.xa | 1.1.0 | 119 |
org.apache.geronimo.specs.geronimo-jta_1.1_spec
javax.transaction.xa | 1.2.0 | 30 | javax.transaction-api
javax.transaction | 0.0.0 | 0 | org.apache.felix.framework
javax.transaction | 1.1.0 | 119 |
org.apache.geronimo.specs.geronimo-jta_1.1_spec
javax.transaction | 1.2.0 | 30 | javax.transaction-api
Regards,
Jason
On 11/30/2015 10:31 AM, Christian Schneider wrote:
On 30.11.2015 16:13, Jason Reilly wrote:
Thanks Christian,
Then in the pom.xml for building the custom distribution, I have
the following relevant bootFeatures:
<feature>aries-blueprint</feature>
<feature>cxf</feature>
<feature>jdbc</feature>
<feature>transaction-api/1.1.0</feature>
This is wrong. You need to install the "transaction" feature. This
is just the API.
Also for transaction you do not need to specify a version. The
feature will install the old and the new transaction blueprint bundle.
<feature>jpa/1.0.4</feature>
Also not sure about this one. As you use the annotations there you
could as well install the "jpa" feature which will give you the new
2.x version.
<feature>openjpa/${openjpa.version}</feature>
Christian