You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aries.apache.org by hu...@apache.org on 2010/04/19 17:59:35 UTC

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

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 {



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

Posted by Joe Bohn <jo...@gmail.com>.
Thanks Brian.  That does the trick and fortunately it appears that I can 
add it into the config.ini so that users won't have to cut/paste  the 
entire content to run the sample.  There certainly are a lot of entries!

Joe


On 4/20/10 8:50 AM, Brian De Pradine wrote:
> Hi Joe,
>
> The mechanism to specify the bootclasspath was removed a while ago in
> favour of the mechanism that David is referring to (this is currently the
> way that the transaction unit tests work). In order to get this mechanism
> to work for the samples you will need to add the following to the command
> line (it is quite long so I suggest creating a script or batch file)
>
> -Dorg.osgi.framework.system.packages=javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.au
t!
>   h.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml
.p!
>   arsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer
.P!
>   OAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServ!
>   er.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers,javax.transaction;partial=true;mandatory:=partial,javax.transaction.xa;partial=true;mandatory:=partial
>
> Cheers
>
> Brian DePradine
> Web Services Development
> IBM Hursley
> External  +44 (0) 1962 816319         Internal 246319
>
> If you can't find the time to do it right the first time, where will you
> find the time to do it again?
>
>
> Joe Bohn<jo...@gmail.com>  wrote on 19/04/2010 20:30:06:
>
>> [image removed]
>>
>> Re: svn commit: r935639 - /incubator/aries/branches/0.1-incubating-
>> RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/
>> unit/impl/PersistenceUnitInfoImpl.java
>>
>> Joe Bohn
>>
>> to:
>>
>> aries-dev
>>
>> 19/04/2010 20:30
>>
>> Please respond to aries-dev
>>
>>
>> I didn't have any success specifying bootclasspath when starting equinox
>
>>    ... same linkage error.  I also tried to removing the geronimo-jta
>> spec from the config.ini to eliminate the possibility of it being loaded
>
>> from 2 different classloaders ...  but still the same result.
>>
>> Joe
>>
>>
>>
>> On 4/19/10 1:25 PM, Joe Bohn wrote:
>>>
>>> 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, hughesj@apache.org 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
>
>
>
>
>
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
>
>
>
>
>
>


-- 
Joe

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

Posted by Brian De Pradine <PR...@uk.ibm.com>.
Hi,

I also tried to run the transactions unit tests using the 
org.osgi.framework.system.packages.extra property listing just the 
transaction packages that we care about, but the tests failed when I did 
that. This means setting the org.osgi.framework.system.packages property, 
as I described previously, is still the way to get this working.

Cheers

Brian DePradine
Web Services Development
IBM Hursley
External  +44 (0) 1962 816319         Internal 246319

If you can't find the time to do it right the first time, where will you 
find the time to do it again?


Brian De Pradine/UK/IBM@IBMGB wrote on 20/04/2010 13:50:44:

> [image removed] 
> 
> Re: svn commit: r935639 - /incubator/aries/branches/0.1-incubating-
> RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/
> unit/impl/PersistenceUnitInfoImpl.java
> 
> Brian De Pradine 
> 
> to:
> 
> aries-dev
> 
> 20/04/2010 13:51
> 
> Please respond to aries-dev
> 
> Hi Joe,
> 
> The mechanism to specify the bootclasspath was removed a while ago in 
> favour of the mechanism that David is referring to (this is currently 
the 
> way that the transaction unit tests work). In order to get this 
mechanism 
> to work for the samples you will need to add the following to the 
command 
> line (it is quite long so I suggest creating a script or batch file)
> 
> -
> 
Dorg.osgi.framework.system.packages=javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.aut!
> 
> 
h.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.p!
> 
> 
arsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.P!
> OAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServ!
> 
> 
er.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers,javax.transaction;partial=true;mandatory:=partial,javax.transaction.xa;partial=true;mandatory:=partial
> 
> Cheers
> 
> Brian DePradine
> Web Services Development
> IBM Hursley
> External  +44 (0) 1962 816319         Internal 246319
> 
> If you can't find the time to do it right the first time, where will you 

> find the time to do it again?
> 
> 
> Joe Bohn <jo...@gmail.com> wrote on 19/04/2010 20:30:06:
> 
> > [image removed] 
> > 
> > Re: svn commit: r935639 - /incubator/aries/branches/0.1-incubating-
> > RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/
> > unit/impl/PersistenceUnitInfoImpl.java
> > 
> > Joe Bohn 
> > 
> > to:
> > 
> > aries-dev
> > 
> > 19/04/2010 20:30
> > 
> > Please respond to aries-dev
> > 
> > 
> > I didn't have any success specifying bootclasspath when starting 
equinox 
> 
> >   ... same linkage error.  I also tried to removing the geronimo-jta 
> > spec from the config.ini to eliminate the possibility of it being 
loaded 
> 
> > from 2 different classloaders ...  but still the same result.
> > 
> > Joe
> > 
> > 
> > 
> > On 4/19/10 1:25 PM, Joe Bohn wrote:
> > >
> > > 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, hughesj@apache.org 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
> 
> 
> 
> 
> 
> 
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number 

> 741598. 
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 
3AU
> 
> 
> 
> 
> 






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU






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

Posted by Brian De Pradine <PR...@uk.ibm.com>.
Hi Joe,

The mechanism to specify the bootclasspath was removed a while ago in 
favour of the mechanism that David is referring to (this is currently the 
way that the transaction unit tests work). In order to get this mechanism 
to work for the samples you will need to add the following to the command 
line (it is quite long so I suggest creating a script or batch file)

-Dorg.osgi.framework.system.packages=javax.accessibility,javax.activation,javax.activity,javax.annotation,javax.annotation.processing,javax.crypto,javax.crypto.interfaces,javax.crypto.spec,javax.imageio,javax.imageio.event,javax.imageio.metadata,javax.imageio.plugins.bmp,javax.imageio.plugins.jpeg,javax.imageio.spi,javax.imageio.stream,javax.jws,javax.jws.soap,javax.lang.model,javax.lang.model.element,javax.lang.model.type,javax.lang.model.util,javax.management,javax.management.loading,javax.management.modelmbean,javax.management.monitor,javax.management.openmbean,javax.management.relation,javax.management.remote,javax.management.remote.rmi,javax.management.timer,javax.naming,javax.naming.directory,javax.naming.event,javax.naming.ldap,javax.naming.spi,javax.net,javax.net.ssl,javax.print,javax.print.attribute,javax.print.attribute.standard,javax.print.event,javax.rmi,javax.rmi.CORBA,javax.rmi.ssl,javax.script,javax.security.auth,javax.security.auth.callback,javax.security.aut!
 h.kerberos,javax.security.auth.login,javax.security.auth.spi,javax.security.auth.x500,javax.security.cert,javax.security.sasl,javax.sound.midi,javax.sound.midi.spi,javax.sound.sampled,javax.sound.sampled.spi,javax.sql,javax.sql.rowset,javax.sql.rowset.serial,javax.sql.rowset.spi,javax.swing,javax.swing.border,javax.swing.colorchooser,javax.swing.event,javax.swing.filechooser,javax.swing.plaf,javax.swing.plaf.basic,javax.swing.plaf.metal,javax.swing.plaf.multi,javax.swing.plaf.synth,javax.swing.table,javax.swing.text,javax.swing.text.html,javax.swing.text.html.parser,javax.swing.text.rtf,javax.swing.tree,javax.swing.undo,javax.tools,javax.xml,javax.xml.bind,javax.xml.bind.annotation,javax.xml.bind.annotation.adapters,javax.xml.bind.attachment,javax.xml.bind.helpers,javax.xml.bind.util,javax.xml.crypto,javax.xml.crypto.dom,javax.xml.crypto.dsig,javax.xml.crypto.dsig.dom,javax.xml.crypto.dsig.keyinfo,javax.xml.crypto.dsig.spec,javax.xml.datatype,javax.xml.namespace,javax.xml.p!
 arsers,javax.xml.soap,javax.xml.stream,javax.xml.stream.events,javax.xml.stream.util,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.sax,javax.xml.transform.stax,javax.xml.transform.stream,javax.xml.validation,javax.xml.ws,javax.xml.ws.handler,javax.xml.ws.handler.soap,javax.xml.ws.http,javax.xml.ws.soap,javax.xml.ws.spi,javax.xml.xpath,org.ietf.jgss,org.omg.CORBA,org.omg.CORBA.DynAnyPackage,org.omg.CORBA.ORBPackage,org.omg.CORBA.TypeCodePackage,org.omg.CORBA.portable,org.omg.CORBA_2_3,org.omg.CORBA_2_3.portable,org.omg.CosNaming,org.omg.CosNaming.NamingContextExtPackage,org.omg.CosNaming.NamingContextPackage,org.omg.Dynamic,org.omg.DynamicAny,org.omg.DynamicAny.DynAnyFactoryPackage,org.omg.DynamicAny.DynAnyPackage,org.omg.IOP,org.omg.IOP.CodecFactoryPackage,org.omg.IOP.CodecPackage,org.omg.Messaging,org.omg.PortableInterceptor,org.omg.PortableInterceptor.ORBInitInfoPackage,org.omg.PortableServer,org.omg.PortableServer.CurrentPackage,org.omg.PortableServer.P!
 OAManagerPackage,org.omg.PortableServer.POAPackage,org.omg.PortableServ!
 er.ServantLocatorPackage,org.omg.PortableServer.portable,org.omg.SendingContext,org.omg.stub.java.rmi,org.w3c.dom,org.w3c.dom.bootstrap,org.w3c.dom.css,org.w3c.dom.events,org.w3c.dom.html,org.w3c.dom.ls,org.w3c.dom.ranges,org.w3c.dom.stylesheets,org.w3c.dom.traversal,org.w3c.dom.views,org.xml.sax,org.xml.sax.ext,org.xml.sax.helpers,javax.transaction;partial=true;mandatory:=partial,javax.transaction.xa;partial=true;mandatory:=partial

Cheers

Brian DePradine
Web Services Development
IBM Hursley
External  +44 (0) 1962 816319         Internal 246319

If you can't find the time to do it right the first time, where will you 
find the time to do it again?


Joe Bohn <jo...@gmail.com> wrote on 19/04/2010 20:30:06:

> [image removed] 
> 
> Re: svn commit: r935639 - /incubator/aries/branches/0.1-incubating-
> RC1/jpa/jpa-container/src/main/java/org/apache/aries/jpa/container/
> unit/impl/PersistenceUnitInfoImpl.java
> 
> Joe Bohn 
> 
> to:
> 
> aries-dev
> 
> 19/04/2010 20:30
> 
> Please respond to aries-dev
> 
> 
> I didn't have any success specifying bootclasspath when starting equinox 

>   ... same linkage error.  I also tried to removing the geronimo-jta 
> spec from the config.ini to eliminate the possibility of it being loaded 

> from 2 different classloaders ...  but still the same result.
> 
> Joe
> 
> 
> 
> On 4/19/10 1:25 PM, Joe Bohn wrote:
> >
> > 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, hughesj@apache.org 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






Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 
741598. 
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU






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

Posted by Joe Bohn <jo...@gmail.com>.
I didn't have any success specifying bootclasspath when starting equinox 
  ... same linkage error.  I also tried to removing the geronimo-jta 
spec from the config.ini to eliminate the possibility of it being loaded 
from 2 different classloaders ...  but still the same result.

Joe



On 4/19/10 1:25 PM, Joe Bohn wrote:
>
> 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, hughesj@apache.org 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

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

Posted by Joe Bohn <jo...@gmail.com>.
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, hughesj@apache.org 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

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

Posted by David Jencks <da...@yahoo.com>.
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, hughesj@apache.org 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


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

Posted by Joe Bohn <jo...@gmail.com>.
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, hughesj@apache.org 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