Hi,
we have a TomEE Webprofile 1.6.0 where we have ActiveMQ 5.9 integrated.
We have a simple application which is deployed as EAR file.
In this application we have a JMS queue associated with a MDB (Message
Driven Bean).
We also have a stateless session bean for sending messages to the JMS queue.
When we start the application in a single node it works fine – sent messages
are consumed by the MDB without errors.
If we start the application in a load balancing cluster with two nodes and
send multiple messages, we get warnings in the log file and the according
messages are redelivered.
Mrz 24, 2014 2:09:37 PM org.apache.activemq.broker.TransportConnection
serviceException
WARNING: Async error occurred:
javax.transaction.xa.XAException: Transaction
'XID:[1197822575,globalId=4000000047544d4944000000000000000000000000000000000000000000000000000,branchId=1000000047544d4944000000000000000000000000000000000000000000000000000]'
has not been started.
at
org.apache.activemq.broker.TransactionBroker.getTransaction(TransactionBroker.java:368)
at
org.apache.activemq.broker.TransactionBroker.acknowledge(TransactionBroker.java:273)
at
org.apache.activemq.broker.MutableBrokerFilter.acknowledge(MutableBrokerFilter.java:92)
at
org.apache.activemq.broker.TransportConnection.processMessageAck(TransportConnection.java:476)
at
org.apache.activemq.command.MessageAck.visit(MessageAck.java:236)
at
org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:292)
at
org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:149)
at
org.apache.activemq.transport.MutexTransport.onCommand(MutexTransport.java:50)
at
org.apache.activemq.transport.WireFormatNegotiator.onCommand(WireFormatNegotiator.java:113)
at
org.apache.activemq.transport.AbstractInactivityMonitor.onCommand(AbstractInactivityMonitor.java:270)
at
org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
at
org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:214)
at
org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:196)
at java.lang.Thread.run(Thread.java:722)
The JMS Broker is configured in a failover scenario:
<Resource id="MyJmsResourceAdapter" type="ActiveMQResourceAdapter">
BrokerXmlConfig
broker:(tcp://localhost:51516)?persistent=true&useJmx=false
ServerUrl =
failover:(tcp://localhost:51515,tcp://localhost:51516)?randomize=false
DataSource myDatabase
</Resource>
The error occurs only when we start both nodes and after the start we send
the messages.
We have also adopted the openejb.deploymentId.format setting in
system.properties to get an unique name for the MDB on each node.
Has someone an idea why this is happening and how we can prevent this error?
Best regards,
Thomas
--
View this message in context:
http://openejb.979440.n4.nabble.com/Transaction-issue-for-MDB-in-cluster-environment-tp4668327.html
Sent from the OpenEJB User mailing list archive at Nabble.com.