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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 > > > > > > > > > > > > > > > > > > > >
