ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Boisvert" <boisv...@intalio.com>
Subject Re: Threading problems with Ode
Date Tue, 06 Nov 2007 01:23:15 GMT
Matthieu's comments are valid if you deploy Ode as a webapp (Axis2 IL).

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.

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