1 Reply Latest reply on Feb 23, 2011 6:26 AM by niefeng

    SLSB Transaction rollback due to java.io.IOException: Client is not connected

    niefeng

      Dear all,

       

      We have encountered the following transaction rollback error when the JTA manager was about to commit the transaction. A close look on the stack trace suggested that the root cause of the transaction rollback error is due to the java.io.IOException: Client is not connected thrown by the MQ Connection class.

       

      Our environment setup is as follow

      A cluster of two Jboss AS 405 CP10 instance with HA JMS

      Solaris 10

      Oracle 10

      JRE150_10

       

      Our application flow is as followed

      A timer thread invoking a method in SLSB. The SLSB will delegate a jms message to a jms destination. The issue (lost connection to the JMS server,  java.io.IOException: Client is not connected) happened when the JTA manager trying to commit the transaction. The error was happened on the main node in the cluster.

       

      Could we know that what is the possible cause of such losing connection to the JMS service? Could it be possible that the JMS service (The HA JMS) running on the main node is temporary unavailable and causing the connection of the client to the jms server lost?

       

       

      The detail of the stack trace is as below

       

      Header 1

      [06:02:11-08:18:16,528] [ERROR:org.jboss.ejb.plugins.LogInterceptor] [Timer-6] TransactionRolledbackException in method: public abstract void base.time.facade.ejb.IiCalTimeMgrObj.alarmTriggered(base.time.entities.ejb.IiCalAlarmObj,java.util.Date) throws java.rmi.RemoteException, causedBy:

      org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=p01/12390653, BranchQual=, localId=12390653] status=STATUS_NO_TRANSACTION; - nested throwable: (org.jboss.mq.SpyXAException: Resource manager error during prepare; - nested throwable: (org.jboss.mq.SpyJMSException: Cannot process a transaction; - nested throwable: (java.io.IOException: Client is not connected)))

          at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372)

          at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:501)

          at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:361)

          at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)

          at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)

          at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)

          at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)

          at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)

          at org.jboss.ejb.Container.invoke(Container.java:954)

          at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)

          at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

          at java.lang.reflect.Method.invoke(Unknown Source)

          at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

          at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

          at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)

          at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

          at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

          at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:169)

          at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:118)

          at org.jboss.invocation.InvokerInterceptor.invokeLocalMarshalled(InvokerInterceptor.java:295)

          at org.jboss.invocation.MarshallingInvokerInterceptor.invoke(MarshallingInvokerInterceptor.java:61)

          at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)

          at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)

          at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)

          at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)

          at $Proxy1261.alarmTriggered(Unknown Source)

          at base.time.facade.util.Alarm$AlarmTask.run(Alarm.java:294)

          at java.util.TimerThread.mainLoop(Unknown Source)

          at java.util.TimerThread.run(Unknown Source)

      Caused by: org.jboss.mq.SpyXAException: Resource manager error during prepare; - nested throwable: (org.jboss.mq.SpyJMSException: Cannot process a transaction; - nested throwable: (java.io.IOException: Client is not connected))

          at org.jboss.mq.SpyXAException.getAsXAException(SpyXAException.java:72)

          at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:151)

          at org.jboss.tm.TransactionImpl$Resource.prepare(TransactionImpl.java:2212)

          at org.jboss.tm.TransactionImpl.prepareResources(TransactionImpl.java:1660)

          at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:347)

          ... 28 more

      Caused by: org.jboss.mq.SpyJMSException: Cannot process a transaction; - nested throwable: (java.io.IOException: Client is not connected)

          at org.jboss.mq.SpyJMSException.getAsJMSException(SpyJMSException.java:72)

          at org.jboss.mq.SpyJMSException.rethrowAsJMSException(SpyJMSException.java:57)

          at org.jboss.mq.Connection.send(Connection.java:1116)

          at org.jboss.mq.SpyXAResourceManager.prepare(SpyXAResourceManager.java:255)

          at org.jboss.mq.SpyXAResource.prepare(SpyXAResource.java:147)

          ... 31 more

      Caused by: java.io.IOException: Client is not connected

          at org.jboss.mq.il.uil2.SocketManager.internalSendMessage(SocketManager.java:264)

          at org.jboss.mq.il.uil2.SocketManager.sendMessage(SocketManager.java:220)

          at org.jboss.mq.il.uil2.UILServerIL.transact(UILServerIL.java:368)

          at org.jboss.mq.Connection.send(Connection.java:1112)

          ... 33 more

       

       

      Regards

      Niefeng