Re: Re: Re: Re: Distribued JOTM transaction between 2 jonasses
Son Tung Nguyen <[email protected]> Thu, 14 Apr 2011 16:13:44 +0200
| Newsgroups | gmane.comp.java.objectweb.jonas |
|---|---|
| Message-ID | <[email protected]> |
Benoit, You said : "JOTM does support the distributed transaction with multiples XA resources (database + queue provider). However it doesn't support nested transactions." Do you mean JOTM is likely flat transaction model (because it does not support nested transactions) ? So i don't understand the purpose or comments : # Set the Transaction Manager launching mode. # If set to 'true', TM is remote: TM must be already launched in an other JVM. # If set to 'false', TM is local: TM is going to run into the same JVM # than the jonas Server. Or perhaps i didn't get the point. Thanks for your advance. Regards Sontung 2011/4/14 Benoit Pelletier <[email protected]> > JOTM does support the distributed transaction with multiples XA resources > (database + queue provider). > However it doesn't support nested transactions. > Regards; > > Hi Benoit, > > "[ ... ] I'm not sure where is located this code (likely WebAp2)" > > Yes, I use spring JMS container listener (MDP) in WebAp2, and the > transactional annotation of onMessage method is > @Transactional(propagation=Propagation.MANDATORY). > > > "If T2 rollbacks, it doesn't cause a rollback for T1 !" > > I thought that JOTM is an implementation of JTA technologies, so it > supports XA transactions. I would expect that T1 and T2 have (participated > in to) the same global transaction (XA) that's driven by JOTM between > Jonasses ... > > If i's so, JOTM implementation is just for local use of a jonas ? How can i > configure jonasses to have transactions that across 2 servers (between > Webaps) for carying out integrity of informations ? > > Regards, > > Sontung > > 2011/4/14 Benoit Pelletier <[email protected]> > >> Hi Son Tung, >> >> If i understood correctly, the behavior is normal as there're two >> different transactions when the requests goes across queues or topics : >> *Transaction T1)* is about the request processing in WebAp1. This >> transaction puts information in db and creates a message in the joram2's >> queue. This transactions is finishing at this point. >> *Transaction T2) *is about the message processing (onMethod()). I'm not >> sure where is located this code (likely WebAp2). >> >> If T2 rollbacks, it doesn't cause a rollback for T1 ! >> >> Regards >> >> Hi, >> >> I'm configuring 2 Jonas (with 2 webapps) and I would like to use JOTM >> implemetation for distribued transactions between webapps (or servers). I >> did ask for configurations of servers in my previous thread (at >> http://jonas.ow2.org/wws/arc/jonas/2011-03/msg00062.html). >> >> Let say, Jonas 1 -> alias *S1*, and Jonas 2 -> alias *S2* >> >> *S1* have *Webap1* >> *S2* have *Webap2* and *joram2* >> * >> * >> *The senario is:** >> * >> >> *Webap1* received a request, create a DTO, trace informations in >> database(DB), and send it in queue of *joram2* (*S2*) . in onMessage >> method call, it has to do something. If last action failed, it has to >> rollback all modifications done in previous action (tracing in DB on * >> S1::Webap1*). >> >> >> >> For testing, on onMessage method call, i throw systematically a >> RuntimeException(). >> >> When i have configurations (of jonas.properties) like : >> >> *S1:* >> >> # Set the Transaction Manager launching mode. >> # If set to 'true', TM is remote: TM must be already launched in an other >> JVM. >> # If set to 'false', TM is local: TM is going to run into the same JVM >> # than the jonas Server. >> jonas.service.jtm.remote *false* >> >> *S2:* >> [....] >> jonas.service.jtm.remote *false* >> >> The rollingback doesn't seem to work; informations saved in database (on >> *Webap1* - *S1*) was not rollbacked. >> >> And when i have configurations like: >> >> *S1:* >> >> # Set the Transaction Manager launching mode. >> # If set to 'true', TM is remote: TM must be already launched in an other >> JVM. >> # If set to 'false', TM is local: TM is going to run into the same JVM >> # than the jonas Server. >> jonas.service.jtm.remote *false* >> >> *S2:* >> [....] >> jonas.service.jtm.remote *true* >> * >> * >> I get this trace :* >> >> * >> 2011-04-14 10:24:56,371 : JonasSecurityServiceImpl.__doStart : Security >> Service started >> 2011-04-14 10:24:56,387 : JOnASWorkCleanerService.__doStart : WorkCleaner >> Service started. >> 2011-04-14 10:24:56,464 : JOTMTransactionService.__doStart : Cannot get TM >> factory - retrying... >> 2011-04-14 10:24:58,465 : JOTMTransactionService.__doStart : Cannot get TM >> factory - retrying... >> 2011-04-14 10:25:02,466 : JOTMTransactionService.__doStart : Cannot get TM >> factory - retrying... >> 2011-04-14 10:25:08,467 : JOTMTransactionService.__doStart : Cannot get TM >> factory - retrying... >> 2011-04-14 10:25:16,131 : ServiceManagerImpl.__checkServiceStates : JOnAS >> server cannot reach the RUNNING state >> 2011-04-14 10:25:16,131 : ServiceManagerImpl.__checkServiceStates : >> Service 'jtm' is not running >> 2011-04-14 10:25:16,132 : ServiceManagerImpl.__checkServiceStates : >> Service 'dbm' is not running >> 2011-04-14 10:25:16,132 : ServiceManagerImpl.__checkServiceStates : >> Service 'resource' is not running >> 2011-04-14 10:25:16,133 : ServiceManagerImpl.__checkServiceStates : >> Service 'web' is not running >> 2011-04-14 10:25:16,133 : ServiceManagerImpl.__checkServiceStates : >> Service 'depmonitor' is not running >> 2011-04-14 10:25:16,133 : ServiceManagerImpl.__checkServiceStates : >> Service 'wm' is not running >> 2011-04-14 10:25:16,134 : ServiceManagerImpl.__checkServiceStates : Please >> check the JOnAS server configuration. >> 2011-04-14 10:25:16,468 : JOTMTransactionService.__doStart : Cannot get TM >> factory - retrying... >> 2011-04-14 10:25:26,470 : JOTMTransactionService.__doStart : >> TransactionService: Cannot get TM factory: >> javax.naming.NamingException: TransactionService: Cannot get TM factory >> 2011-04-14 10:25:26,471 : LoggerService.log : [ERROR] >> org.ow2.jonas.tm.jotm.JOTMTransactionService : >> [org.ow2.jonas.tm.jotm.JOTMTransactionService.277b9268-66e9-49c4-99b7-544a58f24544] >> The callback method start has thrown an exception : TransactionService: >> Cannot get TM factory: javax.naming.NamingException: TransactionService: >> Cannot get TM factory >> org.ow2.jonas.service.ServiceException : TransactionService: Cannot get TM >> factory: javax.naming.NamingException: TransactionService: Cannot get TM >> factory >> at >> org.ow2.jonas.tm.jotm.JOTMTransactionService.__doStart(JOTMTransactionService.java:254) >> at >> org.ow2.jonas.tm.jotm.JOTMTransactionService.doStart(JOTMTransactionService.java) >> at >> org.ow2.jonas.lib.service.AbsServiceImpl.start(AbsServiceImpl.java:95) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> at java.lang.reflect.Method.invoke(Method.java:616) >> at org.apache.felix.ipojo.util.Callback.call(Callback.java:231) >> at org.apache.felix.ipojo.util.Callback.call(Callback.java:191) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallback.call(LifecycleCallback.java:86) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:162) >> at >> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java) >> at >> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:428) >> at >> org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:309) >> at >> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:155) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:283) >> at >> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:220) >> at org.apache.felix.ipojo.IPojoFactory.updated(IPojoFactory.java:588) >> at >> org.apache.felix.cm.impl.ConfigurationManager$UpdateConfiguration.run(ConfigurationManager.java:1253) >> at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:88) >> Caused by: javax.naming.NamingException: TransactionService: Cannot get TM >> factory >> at >> org.ow2.jonas.tm.jotm.JOTMTransactionService.__doStart(JOTMTransactionService.java:239) >> ... 19 more >> >> Did i miss something ? >> >> Thank you for your help, >> >> >> Sontung >> >> >> >> -- >> >> ---------------------------------------------------------------- >> Benoit Pelletierhttp://jonas.ow2.org >> Bull, Architect of an Open World TMhttp://www.bull.com >> >> > > -- > > ---------------------------------------------------------------- > Benoit Pelletierhttp://jonas.ow2.org > Bull, Architect of an Open World TMhttp://www.bull.com > > -- ~~~~~~~~~~~~~~~~~~~ Sontung NGUYEN Master M2IRT - ITIN E-mail: [email protected] Liberté - Sécurité - Gratossité --------> Unixité/Linuxité <--------