[jboss-user] [JBoss Messaging Users] - Problem with JMS XA client sending msg to a remote server
jhd
do-not-reply at jboss.com
Wed Nov 4 12:08:35 EST 2009
Environment:
Server1 (jms client)
Jboss 4.2.2
Jboss Messaging 1.4.0 SP3
Server2 (jms server)
Jboss 4.2.2
Jboss Messaging 1.4.0 SP3
Jboss ESB 4.5
Problem:
Can't successfully send a JMS message from Server1 to Server2 as part of an XA transaction.
Client:
EJB 2.0 (CMT) sending JMS message to queue hosted on Server2. Right now, there is no JDBC XA resource participating in this transaction. Optionally forcing an exception to simulate a rollback condition.
EJB invoked code:
| public void sendCreateUpdateMessageToEsb(Agency agency)
| {
| EsbManager esbManager = new EsbManager();
| esbManager.sendMessageToEsb(TbotEsbMessageType.AGENCY_CREATED_UPDATED, newAgency);
| // throw new DeploymentException("Forcing an exception");
| }
|
JMS client code:
| public void sendMessageToEsb(TbotEsbMessageType messageType, Object... objects)
| {
| if (!env.getEsbEnabled())
| {
| log.info("ESB not enabled in configuration. No message sent.");
| return;
| }
| MessageProducer qSender = null;
| TextMessage tm = null;
| try
| {
| String qName = env.getEsbOutboundQName();
| setupJMSConnection(qName);
| qSender = qSession.createProducer(q);
| ESBMessage esbMessage = new ESBMessage();
| esbMessage.setObjects(objects);
| esbMessage.setMessageType(messageType);
| tm = qSession.createTextMessage(XmlUtil.convertVOtoXMLString(esbMessage));
| qSender.send(tm);
| log.info("Message sent: "+ tm.getText());
| }
| catch (Exception ex)
| {
| log.error("Error occured while sending " + messageType + " message.", ex);
| throw new SystemLinkedException(ex);
| }
| finally
| {
| cleanupJMSConnection();
| }
| }
|
| private void setupJMSConnection(String queueName) throws JMSException, NamingException
| {
| Properties envProperties = new Properties();
| envProperties.put(Context.INITIAL_CONTEXT_FACTORY, env.getNamingFactory());
| envProperties.put(Context.URL_PKG_PREFIXES, env.getNamingFactoryPackage());
| envProperties.put(Context.PROVIDER_URL, env.getEsbHostUrl());
| InitialContext initialContxt = new InitialContext(envProperties);
| QueueConnectionFactory qConncectionFactory = (QueueConnectionFactory)initialContxt.lookup("java:/JmsXA");
| qConnection = (QueueConnection)qConncectionFactory.createConnection();
| q = (Queue)initialContxt.lookup(queueName);
| qSession = (QueueSession)qConnection.createSession(true, QueueSession.AUTO_ACKNOWLEDGE);
| qConnection.start();
|
| boolean isTransacted = qSession.getTransacted();
| String isTrx = Boolean.toString(isTransacted);
| log.info("Setting up JMS connection:");
| log.info("INITIAL_CONTEXT_FACTORY: " + env.getNamingFactory());
| log.info("URL_PKG_PREFIXES: " + env.getNamingFactoryPackage());
| log.info("PROVIDER_URL: " + env.getEsbHostUrl());
| log.info("Queue JNDI name: " + queueName);
| log.info("ConnectionFactory JNDI name: " + "java:/JmsXA");
| log.info("Is transaction true: " + isTrx);
| }
|
Client container log after sending message without a forced rollback:
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : Setting up JMS connection:
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : INITIAL_CONTEXT_FACTORY: org.jnp.interfaces.NamingContextFactory
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : URL_PKG_PREFIXES: org.jboss.naming:org.jnp.interfaces
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : PROVIDER_URL: jnp://172.16.2.203:1099
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : Queue JNDI name: queue/TbotJmsGateway
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : ConnectionFactory JNDI name: java:/JmsXA
| [INFO]@[04 Nov 2009 10:11:52,267] [org.twia.esb.EsbManager] : Is transaction true: true
| [INFO]@[04 Nov 2009 10:11:53,267] [org.twia.esb.EsbManager] : Message sent: <twia:message schemaName="AgencyCreatedUpdatedIn.xsd" xmlns:twia="http://org.twia.titas/message"><agency><locations/></agency><entryTimestamp>2009-11-04T10:11:52.470-06:00</entryTimestamp><messageType>AGENCY_CREATED_UPDATED</messageType></twia:message>
| [ERROR]@[04 Nov 2009 10:11:53,282] [org.jboss.messaging.util.ExceptionUtil] : ConnectionEndpoint[q5-7dzdam1g-1-o618am1g-cw8b9i-t52gs4] sendTransaction [u5-e50eam1g-1-o618am1g-cw8b9i-t52gs4]
| javax.jms.JMSException: Failed to route Reference[2375680]:RELIABLE to TbotJmsGateway
| at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendMessage(ServerConnectionEndpoint.java:743)
| at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.processTransaction(ServerConnectionEndpoint.java:792)
| at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendTransaction(ServerConnectionEndpoint.java:473)
| at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.org$jboss$jms$server$endpoint$advised$ConnectionAdvised$sendTransaction$aop(ConnectionAdvised.java:101)
| at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.server.container.SecurityAspect.handleSendTransaction(SecurityAspect.java:195)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at org.jboss.aop.advice.PerInstanceAdvice.invoke(PerInstanceAdvice.java:121)
| at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
| at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.sendTransaction(ConnectionAdvised.java)
| at org.jboss.jms.wireformat.ConnectionSendTransactionRequest.serverInvoke(ConnectionSendTransactionRequest.java:82)
| at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
| at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)
| at org.jboss.remoting.transport.local.LocalClientInvoker.invoke(LocalClientInvoker.java:101)
| at org.jboss.remoting.Client.invoke(Client.java:1634)
| at org.jboss.remoting.Client.invoke(Client.java:548)
| at org.jboss.remoting.Client.invoke(Client.java:536)
| at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:189)
| at org.jboss.jms.client.delegate.DelegateSupport.doInvoke(DelegateSupport.java:160)
| at org.jboss.jms.client.delegate.ClientConnectionDelegate.org$jboss$jms$client$delegate$ClientConnectionDelegate$sendTransaction$aop(ClientConnectionDelegate.java:221)
| at org.jboss.jms.client.delegate.ClientConnectionDelegate$sendTransaction_N3268650789275322226.invokeNext(ClientConnectionDelegate$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.client.container.FailoverValveInterceptor.invoke(FailoverValveInterceptor.java:92)
| at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
| at org.jboss.jms.client.delegate.ClientConnectionDelegate$sendTransaction_N3268650789275322226.invokeNext(ClientConnectionDelegate$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.client.container.ClosedInterceptor.invoke(ClosedInterceptor.java:170)
| at org.jboss.aop.advice.PerInstanceInterceptor.invoke(PerInstanceInterceptor.java:105)
| at org.jboss.jms.client.delegate.ClientConnectionDelegate$sendTransaction_N3268650789275322226.invokeNext(ClientConnectionDelegate$sendTransaction_N3268650789275322226.java)
| at org.jboss.jms.client.delegate.ClientConnectionDelegate.sendTransaction(ClientConnectionDelegate.java)
| at org.jboss.jms.tx.ResourceManager.sendTransactionXA(ResourceManager.java:637)
| at org.jboss.jms.tx.ResourceManager.commit(ResourceManager.java:370)
| at org.jboss.jms.tx.MessagingXAResource.commit(MessagingXAResource.java:238)
| at org.jboss.resource.connectionmanager.xa.JcaXAResourceWrapper.commit(JcaXAResourceWrapper.java:53)
| at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelOnePhaseCommit(XAResourceRecord.java:636)
| at com.arjuna.ats.arjuna.coordinator.BasicAction.onePhaseCommit(BasicAction.java:2619)
| at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1779)
| at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:88)
| at com.arjuna.ats.arjuna.AtomicAction.end(AtomicAction.java:216)
| at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commit(TransactionImple.java:240)
| 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.twia.security.SecurityInterceptor.invoke(SecurityInterceptor.java:105)
| at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
| at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
| at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
| at org.jboss.ejb.Container.invoke(Container.java:960)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| 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.invokeLocal(InvokerInterceptor.java:209)
| at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
| 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 $Proxy85.updateAgentAndEftAccess(Unknown Source)
| at org.twia.action.AgencyRepAction.performSave(AgencyRepAction.java:246)
| at org.twia.action.CrudAction.performAction(CrudAction.java:83)
| at org.twia.action.BaseAction.execute(BaseAction.java:58)
| at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
| at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
| at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.twia.security.AgentSessionFilter.doFilter(AgentSessionFilter.java:101)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
| at java.lang.Thread.run(Thread.java:595)
| [ERROR]@[04 Nov 2009 10:11:53,282] [org.jboss.ejb.plugins.LogInterceptor] : TransactionRolledbackException in method: public abstract org.twia.agent.Agent org.twia.agent.AgencyManagerSession.updateAgentAndEftAccess(org.twia.agent.Agent,java.lang.String,boolean) throws org.twia.security.SecurityException,org.twia.util.NotFoundException,org.twia.util.AlreadyExistsException,org.twia.util.StaleDataException,java.rmi.RemoteException, causedBy:
| javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
| at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commit(TransactionImple.java:255)
| 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.twia.security.SecurityInterceptor.invoke(SecurityInterceptor.java:105)
| at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
| at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
| at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
| at org.jboss.ejb.Container.invoke(Container.java:960)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| 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.invokeLocal(InvokerInterceptor.java:209)
| at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
| 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 $Proxy85.updateAgentAndEftAccess(Unknown Source)
| at org.twia.action.AgencyRepAction.performSave(AgencyRepAction.java:246)
| at org.twia.action.CrudAction.performAction(CrudAction.java:83)
| at org.twia.action.BaseAction.execute(BaseAction.java:58)
| at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
| at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
| at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.twia.security.AgentSessionFilter.doFilter(AgentSessionFilter.java:101)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
| at java.lang.Thread.run(Thread.java:595)
| [ERROR]@[04 Nov 2009 10:11:53,298] [org.twia.DebugExceptionHandler] : Unhandled Exception:
| Throwable details - org.jboss.tm.JBossTransactionRolledbackException: null; nested exception is:
| javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state; - nested throwable: (javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state)
| at org.jboss.ejb.plugins.TxInterceptorCMT.throwJBossException(TxInterceptorCMT.java:574)
| at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:506)
| at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:361)
| at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
| at org.twia.security.SecurityInterceptor.invoke(SecurityInterceptor.java:105)
| at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
| at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:138)
| at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
| at org.jboss.ejb.Container.invoke(Container.java:960)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| 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.invokeLocal(InvokerInterceptor.java:209)
| at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:195)
| 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 $Proxy85.updateAgentAndEftAccess(Unknown Source)
| at org.twia.action.AgencyRepAction.performSave(AgencyRepAction.java:246)
| at org.twia.action.CrudAction.performAction(CrudAction.java:83)
| at org.twia.action.BaseAction.execute(BaseAction.java:58)
| at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
| at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
| at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
| at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
| at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.twia.security.AgentSessionFilter.doFilter(AgentSessionFilter.java:101)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
| at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
| at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
| at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
| at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
| at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
| at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
| at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
| at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
| at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
| at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
| at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
| at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
| at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
| at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
| at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
| at java.lang.Thread.run(Thread.java:595)
| Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] [com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't commit because the transaction is in aborted state
| at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commit(TransactionImple.java:255)
| at org.jboss.ejb.plugins.TxInterceptorCMT.endTransaction(TxInterceptorCMT.java:501)
| ... 56 more
|
|
Server2 container JMS config files to enable XA follow.
jbossjta-properties.xml:
| <?xml version="1.0" encoding="UTF-8"?>
| <transaction-service>
| <properties depends="common" name="arjuna">
| <!--
| Transaction Reaper Timeout (default is 120000 ms).
| -->
| <property
| name="com.arjuna.ats.arjuna.coordinator.txReaperTimeout" value="120000"/>
| <!--
| Transaction Reaper Mode, can be: NORMAL or DYNAMIC (default is NORMAL).
| -->
| <property name="com.arjuna.ats.arjuna.coordinator.txReaperMode" value="DYNAMIC"/>
| <!--
| (default is NO)
| -->
| <property name="com.arjuna.ats.arjuna.coordinator.asyncCommit" value="NO"/>
| <!--
| (default is NO)
| -->
| <property name="com.arjuna.ats.arjuna.coordinator.asyncPrepare" value="NO"/>
| <!--
| (default is YES)
| -->
| <property
| name="com.arjuna.ats.arjuna.coordinator.commitOnePhase" value="YES"/>
| <!--
| (default is defaultStore)
| -->
| <property name="com.arjuna.ats.arjuna.objectstore.localOSRoot" value="defaultStore"/>
| <!--
| default is under user.home - must be writeable!)
| -->
| <property
| name="com.arjuna.ats.arjuna.objectstore.objectStoreDir" value="PutObjectStoreDirHere"/>
| <!--
| (default is ON)
| -->
| <property
| name="com.arjuna.ats.arjuna.objectstore.objectStoreSync" value="ON"/>
| <!--
| (default is ShadowNoFileLockStore)
| -->
| <property
| name="com.arjuna.ats.arjuna.objectstore.objectStoreType" value="ShadowNoFileLockStore"/>
| <!--
| (default is 255)
| -->
| <property
| name="com.arjuna.ats.arjuna.objectstore.hashedDirectories" value="255"/>
| <!--
| (default is ON)
| -->
| <property
| name="com.arjuna.ats.arjuna.objectstore.transactionSync" value="ON"/>
| <!--
| (Must be unique across all Arjuna instances.)
| -->
| <property name="com.arjuna.ats.arjuna.xa.nodeIdentifier" value="1"/>
| <!-- property
| name="com.arjuna.ats.arjuna.coordinator.actionStore"
| value="HashedActionStore"
| value="JDBCActionStore"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.jdbcTxDbAccess"
| value="JDBCAccess"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.objectStoreType"
| value="ShadowNoFileLockStore"
| value="JDBCStore"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.jdbcUserDbAccess"
| value="JDBCAccess"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeInitial"
| value="1"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.jdbcPoolSizeMaximum"
| value="1"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.objectstore.jdbcPoolPutConnections"
| value="false"
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.size"
| value=""
| -->
| <!-- property
| name="com.arjuna.ats.arjuna.internal.arjuna.objectstore.cacheStore.period"
| value=""
| -->
| <!--
| The location for creating temporary files, e.g., Uids.
| Default is under user.home.
| IMPORTANT: make sure the directory is lockable, e.g., /tmp on Unix
| may not be!
| -->
| <!--
| <property
| name="com.arjuna.ats.arjuna.common.varDir"
| value="var"/>
| -->
| </properties>
| <properties name="common">
| <!-- CLF 2.0 properties -->
| <property name="com.arjuna.common.util.logging.DebugLevel"
| type="System" value="0x00000000"/>
| <property name="com.arjuna.common.util.logging.FacilityLevel"
| type="System" value="0xffffffff"/>
| <property name="com.arjuna.common.util.logging.VisibilityLevel"
| type="System" value="0xffffffff"/>
| <property name="com.arjuna.common.util.logger" type="System" value="log4j"/>
| </properties>
| <properties depends="arjuna" name="txoj">
| <!--
| (default is LockStore of installation - must be writeable!)
| -->
| <!--
| <property
| name="com.arjuna.ats.txoj.lockstore.lockStoreDir"
| value="LockStore"/>
| -->
| <!--
| (default is BasicLockStore)
| -->
| <property name="com.arjuna.ats.txoj.lockstore.lockStoreType" value="BasicLockStore"/>
| <!--
| (default is NO)
| -->
| <property name="com.arjuna.ats.txoj.lockstore.multipleLockStore" value="NO"/>
| <!--
| (default is YES)
| -->
| <property name="com.arjuna.ats.txoj.lockstore.singleLockStore" value="YES"/>
| <!--
| (default is YES)
| -->
| <property
| name="com.arjuna.ats.txoj.lockstore.allowNestedLocking" value="YES"/>
| </properties>
| <properties depends="arjuna" name="jta">
| <!-- bug 5429 -->
| <property name="com.arjuna.ats.jta.allowMultipleLastResources" value="true"/>
| <!-- bug 5429 -->
| <!--
| Support subtransactions in the JTA layer?
| Default is NO.
| -->
| <property name="com.arjuna.ats.jta.supportSubtransactions" value="NO"/>
| <property name="com.arjuna.ats.jta.jtaTMImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"/>
| <!--
| com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple
| -->
| <property name="com.arjuna.ats.jta.jtaUTImplementation" value="com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple"/>
| <!--
| com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple
| -->
| <!--
| *** Add this line to enable recovery for JMS resources using DefaultJMSProvider ***
| -->
| <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
| value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
|
| </properties>
| <properties depends="arjuna,txoj,jta" name="recoverymanager">
| <!--
| Properties used only by the RecoveryManager.
| -->
| <!--
| Periodic recovery settings.
| Time values in this section are in seconds.
| -->
| <!--
| Interval in seconds between initiating the periodic recovery modules.
| Default is 120 seconds.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod" value="120"/>
| <!--
| Interval in seconds between first and second pass of periodic recovery.
| Default is 10 seconds.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.recoveryBackoffPeriod" value="10"/>
| <!--
| Periodic recovery modules to use. Invoked in sort-order of names.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.recoveryExtension1" value="com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule"/>
| <property
| name="com.arjuna.ats.arjuna.recovery.recoveryExtension2" value="com.arjuna.ats.internal.txoj.recovery.TORecoveryModule"/>
| <property
| name="com.arjuna.ats.arjuna.recovery.recoveryExtension3" value="com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule"/>
| <!--
| Expired entry removal
| -->
| <!--
| Expiry scanners to use (order of invocation is random).
| Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager" value="com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner"/>
| <!--
| Interval, in hours, between running the expiry scanners.
| This can be quite long. The absolute value determines the interval -
| if the value is negative, the scan will NOT be run until after one
| interval has elapsed. If positive the first scan will be immediately
| after startup. Zero will prevent any scanning.
| Default = 12 = run immediately, then every 12 hours.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.expiryScanInterval" value="12"/>
| <!--
| Age, in hours, for removal of transaction status manager item.
| This should be longer than any ts-using process will remain running.
| Zero = Never removed. Default is 12.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerExpiryTime" value="12"/>
| <!--
| Use this to fix the port on which the TransactionStatusManager listens,
| The default behaviour is to use any free port.
| -->
| <property
| name="com.arjuna.ats.arjuna.recovery.transactionStatusManagerPort" value="0"/>
| </properties>
| <properties depends="jta" name="jdbc">
| <!--
| property name="com.arjuna.ats.jdbc.isolationLevel" value="TRANSACTION_SERIALIZABLE"/>
| -->
| </properties>
| </transaction-service>
|
|
jms-ds.xml:
| <?xml version="1.0" encoding="UTF-8"?>
|
| <connection-factories>
|
| <!-- ==================================================================== -->
| <!-- JMS Stuff -->
| <!-- ==================================================================== -->
|
| <!-- The JMS provider loader -->
| <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
| name="jboss.messaging:service=JMSProviderLoader,name=JMSProvider">
| <attribute name="ProviderName">DefaultJMSProvider</attribute>
| <attribute name="ProviderAdapterClass">
| org.jboss.jms.jndi.JNDIProviderAdapter
| </attribute>
| <!-- The combined connection factory -->
| <attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
| <!-- The queue connection factory -->
| <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute>
| <!-- The topic factory -->
| <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
| <!-- Uncomment to use HAJNDI to access JMS
| <attribute name="Properties">
| java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
| java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
| java.naming.provider.url=localhost:1100
| </attribute>
| -->
| </mbean>
|
| <!-- The server session pool for Message Driven Beans -->
| <mbean code="org.jboss.jms.asf.ServerSessionPoolLoader"
| name="jboss.messaging:service=ServerSessionPoolMBean,name=StdJMSPool">
| <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
| <attribute name="PoolName">StdJMSPool</attribute>
| <attribute name="PoolFactoryClass">
| org.jboss.jms.asf.StdServerSessionPoolFactory
| </attribute>
| </mbean>
|
| <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->
| <tx-connection-factory>
| <jndi-name>JmsXA</jndi-name>
| <xa-transaction/>
| <rar-name>jms-ra.rar</rar-name>
| <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
| <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
| <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>
| <max-pool-size>20</max-pool-size>
| <security-domain-and-application>JmsXARealm</security-domain-and-application>
| </tx-connection-factory>
|
| </connection-factories>
|
|
Why do I get the exception in Server1? What am I doing wrong? I've read through all the Jboss Messaging docs I can find and search through the forum.
Thanks.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4263989#4263989
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4263989
More information about the jboss-user
mailing list