Maybe this has already been considered, but could one bundle be
picking up XAResource from the JDK and the other from the Aries
Transactions support?  Javax.transaction.xa is a split package with
only a subset coming from the jdk.  The best solution IIRC is to make
sure you don't resolve to the JDK for this package.

Regards, Graham.

On 18 October 2012 08:46, Anatoly Osiko <a...@solveitsoftware.com> wrote:
> Yes. I switched between openjpa and eclipselink. In any case, I import the
> package as optional.
>
>
> On 18/10/2012 6:13 PM, Christian Eugster wrote:
>
> Hi Anatoly,
>
> then is your org.eclipse.persistence.jpa.equinox.weaving@default:false
> bundle dispensable? I the meantime I tried your configuration (see my other
> message)
>
> Regards,
>
> Christian
>
> Am 18.10.12 09:36, schrieb Anatoly Osiko:
>
> Just a quick reply ....
>
> 1) There are no eclipselink bundles, there are only eclipse bundles.
> 2)
> $ grep  'javax.transaction.xa' *.jar
> Binary file geronimo-jta_1.1_spec-1.1.1.jar matches
> Binary file org.apache.aries.transaction.manager-1.0.0.jar matches
> Binary file pax-web-jetty-bundle-0.8.1.jar matches
>
> So, geronimo-jta_1.1_spec-1.1.1.jar is an API bundle and
> geronimo-transaction-2.1.3.jar
>  (bundle name org.apache.geronimo.components.geronimo-transaction) seems to
> be an implementation bundle. As I recollect.
>
> org.apache.aries.transaction.manager-1.0.0.jar seems to use geronimo tx
> implementation by default.
> The aries has also option to use Spring transaction implementation.
> Neither worked for me though.
>
> And I can't tell for sure that all geronimo bundles are required - I seem to
> grab them from the aries blog sample's dependencies which I used as an
> example. At least  org.apache.aries.transaction.manager-1.0.0.jar depends on
> geronimo-j2ee-connector_1.5_spec
>
> I attempted to assemble working JPA/JTA container solution for a standalone
> application.
> A good OSGi based app server should have had this work done.
>
> Regards,
> Anatoly
>
>
> On 18/10/2012 5:04 PM, Christian Eugster wrote:
>
> Hi Anatoly,
>
> thank you for your list of bundles. I searched my target platform but found
> only one bundle with package javax.transaction.xa.* (if it is that package
> that is doubled). But your list seems very interesting to me: I see that you
> have an openjpa bundle and an eclipselink bundle in the runtime
> configuration. And there is no javax.transaction bundle. Does this
> configuration work? Do I need the org.apache.geronimo.* bundles in my
> configuration if I work without an application server? I have a whole bunch
> of bundles in my runtime configuration (a lot more than you), because I
> don't know which of them are required or not. E.g. all aries bundles. So I
> will try with your configuration to see if it works. Thanks a lot for your
> hints.
>
> Christian
>
> Am 18.10.12 01:11, schrieb Anatoly Osiko:
>
> Christian,
> I may suggest to look fist at the runtime configuration - it's possible that
> there are two conflicting bundles exporting the same version of the package.
>
> I am attaching the list bundles from my runtime (eclipse launch
> configuration).
>  Also it is always useful to make use of the equinox console for analysis of
> the bundles, their content and state. I wasted a lot of time before I
> discovered it.
>
>  <stringAttribute key="selected_target_plugins" value=
> "javax.transaction@default:false,
> org.apache.aries.blueprint@default:default,
> org.apache.aries.jndi@default:default,
> org.apache.aries.jpa.api@default:default,
> org.apache.aries.jpa.blueprint.aries@default:default,
> org.apache.aries.jpa.container.context@default:default,
> org.apache.aries.jpa.container@default:default,
> org.apache.aries.proxy@default:default,
> org.apache.aries.transaction.blueprint@default:default,
> org.apache.aries.transaction.manager@default:default,
> org.apache.aries.transaction.wrappers@default:default,
> org.apache.aries.util@default:default,
> org.apache.commons.collections*3.2.1@default:default,
> org.apache.commons.lang*2.5.0@default:default,
> org.apache.commons.logging*1.1.1.v201005080502@default:default,
> org.apache.commons.pool@default:default,
> org.apache.geronimo.components.geronimo-transaction@default:default,
> org.apache.geronimo.specs.geronimo-j2ee-connector_1.5_spec@default:default,
> org.apache.geronimo.specs.geronimo-jpa_2.0_spec@default:default,
> org.apache.geronimo.specs.geronimo-jta_1.1_spec@default:default,
> org.apache.geronimo.specs.geronimo-servlet_2.5_spec@default:default,
> org.apache.log4j@default:default,
> org.apache.openjpa@default:default,
> org.apache.servicemix.bundles.serp@default:default,
> org.eclipse.equinox.cm@default:default,
> org.eclipse.equinox.ds@1:true,
> org.eclipse.equinox.io@default:default,
> org.eclipse.equinox.util@default:default,
> org.eclipse.osgi*3.7.2.v20120110-1415@-1:true,
> org.eclipse.osgi.services*3.3.0.v20110513@default:default,
> org.eclipse.persistence.jpa.equinox.weaving@default:false,
> org.hamcrest.core@default:default,
> org.junit*4.8.2.v4_8_2_v20110321-1705@default:default,
> org.objectweb.asm.all@default:default,
> org.ops4j.pax.logging.pax-logging-api@default:default,
> org.ops4j.pax.logging.pax-logging-service@default:default"/>
>
>
>
>
>
>
> On 17/10/2012 4:16 AM, Christian Eugster wrote:
>
> Hi,
>
> I have setup a little project with aries blueprint + jpa and eclipselink
> (with aries.eclipselink.adapter). Backend is Derby embedded driver. I have
> tree bundles, a datasource bundle for derby
> (ch.eugster.herakles.datasource.derby), a jpa persistence bundle
> (ch.eugster.herakles.persistence) with persistence.xml, orm.xml and
> persistence classes (Tectonic, TectonicsLevel, TectonicsLevelLink) and a
> junit test bundle (ch.eugster.herakles.persistence.test).
>
> The testclass contains two testmethods so far, one checks if a
> TectonicsService exists (testValidService) and a method that tries to
> persist an object of type Tectonic (testPersist). Running the test, the
> first method passes, but the second throws the following message:
>
> [code]
> java.lang.LinkageError: loader constraint violation: when resolving
> interface method
> "javax.transaction.Transaction.enlistResource(Ljavax/transaction/xa/XAResource;)Z"
> the class loader (instance of
> org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) of the current
> class, org/apache/aries/transaction/jdbc/XADatasourceEnlistingWrapper, and
> the class loader (instance of
> org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader) for resolved
> class, javax/transaction/Transaction, have different Class objects for the
> type javax/transaction/xa/XAResource used in the signature
>     at
> org.apache.aries.transaction.jdbc.XADatasourceEnlistingWrapper.enlist(XADatasourceEnlistingWrapper.java:102)
>     at
> org.apache.aries.transaction.jdbc.XADatasourceEnlistingWrapper.getConnection(XADatasourceEnlistingWrapper.java:65)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
>     at
> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>     at $Proxy15.getConnection(Unknown Source)
>     at
> org.apache.aries.jpa.container.unit.impl.DelayedLookupDataSource.getConnection(DelayedLookupDataSource.java:36)
>     at
> org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:123)
>     at
> org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
>     at
> org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
>     at
> org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:295)
>     at
> org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connect(DatasourceAccessor.java:418)
>     at
> org.eclipse.persistence.sessions.server.ConnectionPool.buildConnection(ConnectionPool.java:216)
>     at
> org.eclipse.persistence.sessions.server.ExternalConnectionPool.startUp(ExternalConnectionPool.java:146)
>     at
> org.eclipse.persistence.sessions.server.ServerSession.connect(ServerSession.java:489)
>     at
> org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:639)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:214)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:500)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:189)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
>     at
> org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:289)
>     at
> org.apache.aries.jpa.container.impl.CountingEntityManagerFactory.createEntityManager(CountingEntityManagerFactory.java:71)
>     at
> org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:152)
>     at
> org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:84)
>     at
> org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.persist(JTAEntityManager.java:278)
>     at
> ch.eugster.herakles.persistence.internal.service.AbstractEntityServiceComponent.persist(AbstractEntityServiceComponent.java:104)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
>     at
> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>     at $Proxy6.persist(Unknown Source)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:54)
>     at
> org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:119)
>     at $Proxy6.persist(Unknown Source)
>     at
> ch.eugster.herakles.persistence.test.TestCase.testPersist(TestCase.java:57)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>     at
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>     at
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>     at
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>     at
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>     at
> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>     at
> org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
>     at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
>     at
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
>     at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>     at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>     at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>     at
> org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main(RemotePluginTestRunner.java:62)
>     at
> org.eclipse.pde.internal.junit.runtime.CoreTestApplication.run(CoreTestApplication.java:23)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
>     at
> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
>     at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
>     at
> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
>     at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
>     at
> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
>     at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
>     at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
>     at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
> [/code]
>
> I understand, that there is a classloader issue but I don't know why it
> comes up and how I can resolve this problem. May anyone give me a hint?
>
> Thank you!
>
>
>
> --
> Anatoly Osiko
> Software Engineer, Integration
> SolveIT Software Pty Ltd
>
> Adelaide | Brisbane | Chisinau | Melbourne | Perth
>
> D: +61 8 7071 4918
> T: +61 8 8221 5533
> M: +61 4 1980 0386
> F: +61 8 8221 5677
>
> SolveIT Software Building
> Level 1, 99 Frome Street,
> Adelaide, SA 5000
>
> www.SolveITSoftware.com
>
>
>
>
>
> --
> Anatoly Osiko
> Software Engineer, Integration
> SolveIT Software Pty Ltd
>
> Adelaide | Brisbane | Chisinau | Melbourne | Perth
>
> D: +61 8 7071 4918
> T: +61 8 8221 5533
> M: +61 4 1980 0386
> F: +61 8 8221 5677
>
> SolveIT Software Building
> Level 1, 99 Frome Street,
> Adelaide, SA 5000
>
> www.SolveITSoftware.com
>
>
>
>
>
> --
> Anatoly Osiko
> Software Engineer, Integration
> SolveIT Software Pty Ltd
>
> Adelaide | Brisbane | Chisinau | Melbourne | Perth
>
> D: +61 8 7071 4918
> T: +61 8 8221 5533
> M: +61 4 1980 0386
> F: +61 8 8221 5677
>
> SolveIT Software Building
> Level 1, 99 Frome Street,
> Adelaide, SA 5000
>
> www.SolveITSoftware.com
>
>

Reply via email to