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