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