Distribued JOTM transaction between 2 jonasses

Son Tung Nguyen <[email protected]> Thu, 14 Apr 2011 11:05:52 +0200
Newsgroups gmane.comp.java.objectweb.jonas
Message-ID <[email protected]>
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