Re: Re: Re: Re: Re: Distribued JOTM transaction between 2 jonasses
Guillaume Sauthier <[email protected]> Thu, 14 Apr 2011 16:46:23 +0200
| Newsgroups | gmane.comp.java.objectweb.jonas |
|---|---|
| Organization | Objectweb Consortium |
| Message-ID | <[email protected]> |
There is no propagation of transactions between the message producer (WebApp1) and the message consummer (MDB in WebApp2). --G Le 14/04/2011 16:13, Son Tung Nguyen a écrit : > 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] > <mailto:[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] >> <mailto:[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 Pelletier >> http://jonas.ow2.org >> Bull, Architect of an Open World TM >> http://www.bull.com >> >> > > > -- > > ---------------------------------------------------------------- > Benoit Pelletier > http://jonas.ow2.org > Bull, Architect of an Open World TM > http://www.bull.com > > > > > -- > ~~~~~~~~~~~~~~~~~~~ > Sontung NGUYEN > Master M2IRT - ITIN > E-mail: [email protected] <mailto:[email protected]> > Liberté - Sécurité - Gratossité > --------> Unixité/Linuxité <--------
Guillaume_Sauthier.vcf
(text/x-vcard, 387 B)
begin:vcard fn:Guillaume Sauthier n:Sauthier;Guillaume org:<a href="http://www.ow2.org"><img title="OW2" alt="OW2 Consortium" border="0" src="http://www.ow2.org/xwiki/bin/skin/XWiki/DefaultSkin/logoOW2.png" /></a> adr:;;;;;;France email;internet:[email protected] title:<a href="http://jonas.ow2.org">JOnAS Application Server</a> url:http://jonas.ow2.org version:2.1 end:vcard