Thanks David. I was just speaking about this with Jarek as well. So it seems that the problem is that some transaction classes are loaded from the system bundle. At one time we were including the geronimo-jta spec jar in the Xbootclasspath when starting equinox to avoid this issue. But then something was changed (don't recall what at the moment) so that was no longer necessary. I'll try adding the spec back to the Xbootclasspath when starting equinox to confirm that resolves the issue. If anybody recalls what had changed that removed that requirement - and why it no longer seems to be working - please let me know.

Joe

On 4/19/10 1:05 PM, David Jencks wrote:
Karaf has some goo like

javax.transaction; javax.transaction.xa; version=1.1; partial=true; 
mandatory:=partial, \

about exporting from the system bundle which is supposed to avoid some linkage 
problems.  Do the samples have the same goo?

thanks
david jencks

On Apr 19, 2010, at 9:54 AM, Joe Bohn wrote:

It certainly looks like this fix is necessary (the one to return the 
JTA_DATASOURCE rather than the NON_JTA_DATASOURCE) - but I want to warn you 
that it surfaces another problem.  I don't know the details of how to fix this 
yet but we need to get it resolved.  This is especially important because it 
looks like you are getting ready to create a new RC and I think this error will 
prevent that from passing if not resolved:

To recreate the error just run Blog for JPA or AriesTrader configured for 
container managed JPA.

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/ConnectionWrapper, 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.ConnectionWrapper.<init>(ConnectionWrapper.java:67)
        at 
org.apache.aries.transaction.jdbc.XADatasourceEnlistingWrapper.getEnlistedConnection(XADatasourceEnlistingWrapper.java:85)
        at 
org.apache.aries.transaction.jdbc.XADatasourceEnlistingWrapper.getConnection(XADatasourceEnlistingWrapper.java:50)
        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.aries.jndi.services.ServiceHelper$JNDIServiceDamper.invoke(ServiceHelper.java:99)
        at $Proxy13.getConnection(Unknown Source)
        at 
org.apache.openjpa.lib.jdbc.DelegatingDataSource.getConnection(DelegatingDataSource.java:131)
        at 
org.apache.openjpa.lib.jdbc.DecoratingDataSource.getConnection(DecoratingDataSource.java:106)
        at 
org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:91)
        at 
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:595)
        at 
org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:1489)
        at 
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:507)
        at 
org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:432)
        at 
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:104)
        at 
org.apache.openjpa.conf.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
        at 
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:83)
        at 
org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:939)
        at 
org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:930)
        at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:343)
        at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:315)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:218)
        at 
org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
        at 
org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
        at 
org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:57)
        at 
org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:122)
        at 
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:73)
        at 
org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.persist(JTAEntityManager.java:220)
        at 
org.apache.aries.samples.ariestrader.persist.jpa.cm.TradeJpaCm.createQuote(TradeJpaCm.java:444)
        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.blueprint.proxy.Collaborator$1.invoke(Collaborator.java:66)
        at 
org.apache.aries.blueprint.proxy.Collaborator.invoke(Collaborator.java:151)
        at 
org.apache.aries.samples.ariestrader.persist.jpa.cm.$TradeJpaCm360369157.createQuote(Unknown
 Source)
        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at 
org.apache.aries.blueprint.container.AbstractServiceReferenceRecipe$JdkProxyFactory$1.invoke(AbstractServiceReferenceRecipe.java:614)
        at $Proxy15.createQuote(Unknown Source)
        at 
org.apache.aries.samples.ariestrader.web.TradeBuildDB.<init>(TradeBuildDB.java:183)
        at 
org.apache.aries.samples.ariestrader.web.TradeConfigServlet.service(TradeConfigServlet.java:418)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at 
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502)
        at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
        at 
org.ops4j.pax.web.service.internal.WelcomeFilesFilter.doFilter(WelcomeFilesFilter.java:169)
        at 
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1148)
        at 
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:387)
        at 
org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.handle(HttpServiceServletHandler.java:64)
        at 
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at 
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
        at 
org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.handle(HttpServiceContext.java:111)
        at 
org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:64)
        at 
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:322)
        at 
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
        at 
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
        at 
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
        at 
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:520)









  I discovered this in trunk while attempting to run the AriesTrader sample - 
but the same is also true of the Blog sample.  When we attempt to use 
declarative transaction support after the change be


On 4/19/10 11:59 AM, [email protected] wrote:
Author: hughesj
Date: Mon Apr 19 15:59:35 2010
New Revision: 935639

URL: http://svn.apache.org/viewvc?rev=935639&view=rev
Log:
ARIES-287 fix a couple egregious errors in PersistenceUnitInfoImpl - this time 
in the 0.1-incubating release candidate branch

Modified:
     
incubator/aries/branches/0.1-incubating-RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java

Modified: 
incubator/aries/branches/0.1-incubating-RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/aries/branches/0.1-incubating-RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java?rev=935639&r1=935638&r2=935639&view=diff
==============================================================================
--- 
incubator/aries/branches/0.1-incubating-RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
 (original)
+++ 
incubator/aries/branches/0.1-incubating-RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/unit/impl/PersistenceUnitInfoImpl.java
 Mon Apr 19 15:59:35 2010
@@ -80,17 +80,20 @@ public class PersistenceUnitInfoImpl imp
      if(jarFiles != null) {
        for(String jarFile : jarFiles){
          URL url = bundle.getResource(jarFile);
-        if(url == null)
+        if(url == null) {
            _logger.error("The persistence unit {} in bundle {} listed the jar file 
{}, but " +
                        "{} could not be found in the bundle", new 
Object[]{getPersistenceUnitName(),
                bundle.getSymbolicName() + "_" + bundle.getVersion(), jarFile, 
jarFile});
+        } else {
+            urls.add(url);
+        }
        }
      }
      return urls;
    }

    public DataSource getJtaDataSource() {
-    String jndiString = (String) 
unit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.NON_JTA_DATASOURCE);
+    String jndiString = (String) 
unit.getPersistenceXmlMetadata().get(ParsedPersistenceUnit.JTA_DATASOURCE);
      DataSource toReturn = null;
      if(jndiString != null) {
        try {





--
Joe




--
Joe

Reply via email to