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 00:37:22 GMT
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