What John describes should work, but will tie imports to the specific
provider bundle.  If you're using equinox, it exports all packages at
version 0.0.0 but the resolver will still prefer system packages
unless you set osgi.resolver.preferSystemPackages=false.  Once you've
done the import for javax.transaction.xa should prefer the later
version provided by the transactions bundle.

Regards, Graham.


On 18 October 2012 23:46, John W Ross <[email protected]> wrote:
> I confess to not following this chain very closely, but I believe he was
> suggesting to use the bundle-symbolic-name and bundle-version attributes in
> your package imports. For example,
>
> Import-Package:
> javax.transaction.xa;version=1.1.0;bundle-symbolic-name=org.apache.aries.transaction.manager;bundle-version=1.0.0
>
> John
>
>>
>> Re: Aries + EclipseLink
>
>
>>
>> Hi Graham,
>>
>> How can I make shure, I don't resolve to the JDK for the
>> javax.transaction.* package?
>>
>> Regards, Christian
>
>> Am 18.10.12 10:11, schrieb Graham Charters:
>> 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 <[email protected]> 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