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
