ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kristian Köhler <Kristian.Koeh...@dmc.de>
Subject AW: Threading problems with Ode
Date Tue, 06 Nov 2007 07:08:10 GMT
Hi

> Matthieu's comments are valid if you deploy Ode as a webapp 
> (Axis2 IL).

I'm using Ode within ServiceMix (JBI deployment). Not as a webapp.

> However, when Ode is deployed inside a JBI container, it obtains its
> TransactionManager instance through the ComponentContext, not by
> lookup as is the case for webapp deployment.
> 
> So if I understood correctly your deployment configuration, you should
> double-check your ServixeMix configuration.

This should be ok. ;-) The Geronimo Transaction Manager is set on the JBIContainer (ServiceMixGBean
which is deployed within Geronimo). Is there any possibility to trace that i bit more?

If I turn off persistence everything works great.

Kristian

> 
> alex
> 
> On 11/5/07, Matthieu Riou <matthieu@offthelip.org> wrote:
> > Hi,
> >
> > You shouldn't try to set the OpenJPA transaction manager 
> independently, we
> > set it to the same one configured on ODE. The problem you 
> probably have is
> > that ODE, when set to use Geronimo, uses the Geronimo 1.1 
> GBean transaction
> > manager instead of the global JNDI lookup that they've 
> implemented in 1.1.
> > So that's the origin of your ClasscastException.
> >
> > What I would do is revert your changes for OpenJPA and 
> configure ODE to use
> > the JBoss transaction factory. I know, that last part is 
> probably confusing
> > but that's a little trick. Actually the JBossFactory uses a 
> standard JNDI
> > lookup for java:/TransactionManager which didn't work with 
> Geronimo 1.1 but
> > should work just fine with Geronimo 2.0 now that they have 
> a global JNDI. We
> > should just rename JBossFactory to StandardFactory in the 
> next release so
> > that it's less confusing. So something like this should do 
> the trick:
> >
> > ode-jbi.db.mode=EXTERNAL
> > ode-jbi.db.ext.dataSource=java:db/OdeDatasource
> > ode-jbi.tx.factory.class=org.apache.ode.axis2.util.JBossFactory
> >
> > Let us know how it goes and thanks for the good work on GASwerk!
> >
> > Matthieu
> >
> >
> > On Nov 5, 2007 12:53 AM, Kristian Köhler 
> <Kristian.Koehler@dmc.de> wrote:
> >
> > > Hi
> > >
> > >
> > > > Is there a way to configure the Transaction Manager lookup
> > > > from Ode. I like to use the TM used from the DataSource...
> > >
> > > I added the following properties to the persistence.xml 
> file within
> > > bpel-store and dao-jpa.
> > >
> > > -- 8< (start) --
> > >
> > > <properties>
> > >  <property name="openjpa.ManagedRuntime"
> > > value="jndi(TransactionManagerName=java:/TransactionManager)"/>
> > > </properties>
> > >
> > > -- 8< (end) --
> > >
> > > This works fine with 1 thread. When I test my sample with 
> 3 thrads the
> > > following error arise (Invalid Xid):
> > >
> > > -- 8< (start) --
> > >
> > > 09:47:11,851 ERROR [SimpleScheduler] Error while 
> executing transaction
> > > javax.transaction.RollbackException: Unable to commit: 
> transaction marked
> > > for rollback
> > >        at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(
> > > TransactionImpl.java:271)
> > >        at
> > > 
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(
> > > TransactionManagerImpl.java:238)
> > >        at 
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(
> > > SimpleScheduler.java:180)
> > >        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > SimpleScheduler.java:333)
> > >        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > SimpleScheduler.java:330)
> > >        at 
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java
> > > :269)
> > >        at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> > >        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> > > ThreadPoolExecutor.java:650)
> > >        at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> > > ThreadPoolExecutor.java:675)
> > >        at java.lang.Thread.run(Thread.java:595)
> > > 09:47:11,976 ERROR [SimpleScheduler] Error while 
> executing transaction
> > > javax.transaction.RollbackException: Error during one-phase commit
> > >        at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(
> > > TransactionImpl.java:311)
> > >        at
> > > 
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(
> > > TransactionManagerImpl.java:238)
> > >        at 
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(
> > > SimpleScheduler.java:180)
> > >        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > SimpleScheduler.java:333)
> > >        at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > SimpleScheduler.java:330)
> > >        at 
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java
> > > :269)
> > >        at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> > >        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> > > ThreadPoolExecutor.java:650)
> > >        at java.util.concurrent.ThreadPoolExecutor$Worker.run(
> > > ThreadPoolExecutor.java:675)
> > >        at java.lang.Thread.run(Thread.java:595)
> > > Caused by: javax.transaction.xa.XAException: Invalid Xid
> > >        at 
> org.apache.geronimo.connector.outbound.LocalXAResource.commit(
> > > LocalXAResource.java:53)
> > >        at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(
> > > TransactionImpl.java:302)
> > >        ... 9 more
> > >
> > > -- 8< (end) --
> > >
> > > Any ideas?
> > >
> > > Kristian
> > >
> > > > Hope this helps... ;-)
> > > >
> > > > Kristian
> > > >
> > > > ---
> > > > http://gaswerk.sourceforge.net
> > > >
> > > > >
> > > > > alex
> > > > >
> > > > >
> > > > > On 11/2/07, Kristian Köhler <Kristian.Koehler@dmc.de> wrote:
> > > > > >
> > > > > >
> > > > > > You're right this was with ode_trunk. My first test was
> > > > > with version 1.1which resulted in the following error. I will
> > > > > now test with the sendSynch
> > > > > > property.
> > > > > >
> > > > > > Thanks!
> > > > > >
> > > > > > Kristian
> > > > > >
> > > > > > --- 8< ---
> > > > > >
> > > > > > 14:51:19,018 ERROR [JacobVPU] Method "run" in class "
> > > > > > org.apache.ode.bpel.runtime.INVOKE" threw an 
> unexpected exception.
> > > > > > org.apache.ode.bpel.iapi.ContextException: Unable 
> to register
> > > > > > synchronizer.
> > > > > >         at
> > > > > >
> > > > >
> > > > 
> org.apache.ode.scheduler.simple.SimpleScheduler.registerSynchronizer(
> > > > > > SimpleScheduler.java:200)
> > > > > >         at
> > > > > org.apache.ode.jbi.OdeConsumer.invokePartner(OdeConsumer.java
> > > > > > :119)
> > > > > >         at
> > > > > org.apache.ode.jbi.MessageExchangeContextImpl.invokePartner(
> > > > > > MessageExchangeContextImpl.java:60)
> > > > > >         at
> > > > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(
> > > > > > BpelRuntimeContextImpl.java:794)
> > > > > >         at 
> org.apache.ode.bpel.runtime.INVOKE.run(INVOKE.java:96)
> > > > > >         at
> > > > > sun.reflect.GeneratedMethodAccessor147.invoke(Unknown Source)
> > > > > >         at sun.reflect.DelegatingMethodAccessorImpl.invoke(
> > > > > > DelegatingMethodAccessorImpl.java:25)
> > > > > >         at java.lang.reflect.Method.invoke(Method.java:585)
> > > > > >         at 
> org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(
> > > > > > JacobVPU.java:451)
> > > > > >         at
> > > > > org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
> > > > > >         at
> > > > > org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(
> > > > > > BpelRuntimeContextImpl.java:836)
> > > > > >         at
> > > > > org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.invokeMyRole(
> > > > > > PartnerLinkMyRoleImpl.java:193)
> > > > > >         at 
> org.apache.ode.bpel.engine.BpelProcess.invokeProcess(
> > > > > > BpelProcess.java:169)
> > > > > >         at 
> org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(
> > > > > > BpelProcess.java:306)
> > > > > >         at
> > > > org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(
> > > > > > BpelEngineImpl.java:318)
> > > > > >         at
> > > > org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(
> > > > > > BpelServerImpl.java:364)
> > > > > >         at
> > > > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(
> > > > > > SimpleScheduler.java:335)
> > > > > >         at
> > > > org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(
> > > > > > SimpleScheduler.java:334)
> > > > > >         at
> > > > > 
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction
> > > > > > (SimpleScheduler.java:173)
> > > > > >         at 
> org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > > > > SimpleScheduler.java:333)
> > > > > >         at 
> org.apache.ode.scheduler.simple.SimpleScheduler$4.call(
> > > > > > SimpleScheduler.java:330)
> > > > > >         at
> > > > > java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java
> > > > > > :269)
> > > > > >         at
> > > > java.util.concurrent.FutureTask.run(FutureTask.java:123)
> > > > > >         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(
> > > > > > ThreadPoolExecutor.java:650)
> > > > > >         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(
> > > > > > ThreadPoolExecutor.java:675)
> > > > > >         at java.lang.Thread.run(Thread.java:595)
> > > > > > Caused by: java.lang.NullPointerException
> > > > > >         at
> > > > > >
> > > > >
> > > > 
> org.apache.ode.scheduler.simple.SimpleScheduler.registerSynchronizer(
> > > > > > SimpleScheduler.java:188)
> > > > > >         ... 25 more
> > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> 

Mime
View raw message