ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matth...@offthelip.org>
Subject Re: Threading problems with Ode
Date Tue, 06 Nov 2007 18:17:03 GMT
On Nov 5, 2007 11:08 PM, Kristian Köhler <Kristian.Koehler@dmc.de> wrote:

> 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.
>

Sorry about that, I should have read the whole thread.


>
> > 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?
>

You can set OpenJPA logging to debug to see whether it hooks properly on the
transaction manager in these failing transactions. But as I indicated
before, the transaction manager used by OpenJPA is set to bet the same one
used by ODE. Also the last stack you posted was when forcing the transaction
manager used byOpenJPA, do you have the same exception when using the normal
configuration?

Thanks,
Matthieu


> 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
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message