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