Hi again,
I have modified the test app in github so that now it runs *two concurrent
activemq instances* in place of one.. which is the final scenario.
With that scenario (where XA is really necessary) JVM+Bitronix keeps
behaving ok *while tomee doesn't, even after applying your patch with some
changes done in order to have two resource adapters*.
I wasn't able to create the patch in GitHub as you did so I paste it here:
---------------------------------------------------------------
diff --git
a/TestXA-allEmbedded/src/main/java/com/test/MyMessageReceiver.java
b/TestXA-allEmbedded/src/main/java/com/test/MyMessageReceiver.java
index 6992395..e89cf4b 100644
--- a/TestXA-allEmbedded/src/main/java/com/test/MyMessageReceiver.java
+++ b/TestXA-allEmbedded/src/main/java/com/test/MyMessageReceiver.java
@@ -111,7 +111,7 @@
Session session = null;
try {
conn = forwardConnectionFactory.createConnection();
- session = conn.createSession(false,
Session.AUTO_ACKNOWLEDGE);
+ session = conn.createSession(true,
Session.AUTO_ACKNOWLEDGE);
MessageProducer messageProducer =
session.createProducer(forwardQueue);
TextMessage msg =
session.createTextMessage(msgToBeSent);
messageProducer.send(msg);
diff --git a/TestXA-allEmbedded/tomee/conf/tomee.xml
b/TestXA-allEmbedded/tomee/conf/tomee.xml
index 65a6910..1126d53 100644
--- a/TestXA-allEmbedded/tomee/conf/tomee.xml
+++ b/TestXA-allEmbedded/tomee/conf/tomee.xml
@@ -1,62 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
-
- <Resource id="MyAdapter" type="ActiveMQResourceAdapter">
- BrokerXmlConfig
- ServerUrl tcp://fakehost:666
- </Resource>
+ <Resource id="BrokerIn" type="ActiveMQResourceAdapter">
+ BrokerXmlConfig =
+ ServerUrl =
tcp://localhost:61616?jms.redeliveryPolicy.maximumRedeliveries=0
+ </Resource>
- <Resource id="jms/MyIncomingConnFactory"
type="javax.jms.ConnectionFactory"
class-name="org.apache.activemq.ActiveMQXAConnectionFactory">
- BrokerURL
tcp://localhost:61616?jms.redeliveryPolicy.maximumRedeliveries=0
- </Resource>
-
- <Resource id="jms/MyOutgoingConnFactory"
type="javax.jms.ConnectionFactory"
class-name="org.apache.activemq.ActiveMQXAConnectionFactory">
- BrokerURL
tcp://localhost:61617?jms.redeliveryPolicy.maximumRedeliveries=0
- </Resource>
-
- <Resource id="jms/MyOutgoingQueue"
class-name="org.apache.activemq.command.ActiveMQQueue">
- PhysicalName MY_OUTGOING_QUEUE
- </Resource>
-
- <Resource id="jms/MyIncomingQueue"
class-name="org.apache.activemq.command.ActiveMQQueue">
- PhysicalName MY_INCOMING_QUEUE
- </Resource>
+ <Resource id="BrokerOut" type="ActiveMQResourceAdapter">
+ BrokerXmlConfig =
+ ServerUrl =
tcp://localhost:61617?jms.redeliveryPolicy.maximumRedeliveries=0
+ </Resource>
-
-
-
- <Resource id="jdbc/myDBXAPooled" type="DataSource">
- XaDataSource myDBXA
- DataSourceCreator dbcp
- JtaManaged true
- UserName none
- Password none
- MaxWait 2000
- ValidationQuery SELECT 1 FROM SYSIBM.SYSDUMMY1
- MaxActive 15
- </Resource>
- <Resource id="myDBXA" type="XADataSource"
class-name="org.apache.derby.jdbc.ClientXADataSource">
- DatabaseName xaTestDB
- ServerName localhost
- PortNumber 1527
- User none
- Password none
- </Resource>
-
+ <Resource id="jms/MyIncomingConnFactory"
type="javax.jms.ConnectionFactory">
+ ResourceAdapter = BrokerIn
+ </Resource>
+ <Resource id="jms/MyOutgoingConnFactory"
type="javax.jms.ConnectionFactory">
+ ResourceAdapter = BrokerOut
+ </Resource>
+
+ <Resource id="jms/MyOutgoingQueue" type="javax.jms.Queue">
+ PhysicalName = MY_OUTGOING_QUEUE
+ </Resource>
+
+ <Resource id="jms/MyIncomingQueue" type="javax.jms.Queue">
+ PhysicalName = MY_INCOMING_QUEUE
+ </Resource>
+
+
+
+
+ <Resource id="jdbc/myDBXAPooled" type="DataSource">
+ XaDataSource myDBXA
+ DataSourceCreator dbcp
+ JtaManaged true
+ UserName none
+ Password none
+ MaxWait 2000
+ ValidationQuery SELECT 1 FROM SYSIBM.SYSDUMMY1
+ MaxActive 15
+ </Resource>
+ <Resource id="myDBXA" type="XADataSource"
class-name="org.apache.derby.jdbc.ClientXADataSource">
+ DatabaseName xaTestDB
+ ServerName localhost
+ PortNumber 1527
+ User none
+ Password none
+ </Resource>
+
</tomee>
---------------------------------------------------------------
Also in this case, with your patch applied, I keep getting when in tomee:
----------------------------------
...
13:50:13,489 INFO msgListenersTaskExecutor-1 com.test.MyListener:921 -
Successfully refreshed JMS Connection
13:50:19,495 WARN msgListenersTaskExecutor-1 com.test.MyListener:871 -
Setup of JMS message listener invoker failed for destination
'queue://MY_INCOMING_QUEUE' - trying to recover. Cause: Local JMS
transaction failed to commit; nested exception is javax.j
ms.IllegalStateException: Not a transacted session
13:50:19,496 INFO msgListenersTaskExecutor-1 com.test.MyListener:921 -
Successfully refreshed JMS Connection
13:50:25,506 WARN msgListenersTaskExecutor-1 com.test.MyListener:871 -
Setup of JMS message listener invoker failed for destination
'queue://MY_INCOMING_QUEUE' - trying to recover. Cause: Local JMS
transaction failed to commit; nested exception is javax.j
ms.IllegalStateException: Not a transacted session
13:50:25,506 INFO msgListenersTaskExecutor-1 com.test.MyListener:921 -
Successfully refreshed JMS Connection
13:50:31,512 WARN msgListenersTaskExecutor-1 com.test.MyListener:871 -
Setup of JMS message listener invoker failed for destination
'queue://MY_INCOMING_QUEUE' - trying to recover. Cause: Local JMS
transaction failed to commit; nested exception is javax.j
ms.IllegalStateException: Not a transacted session
13:50:31,512 INFO msgListenersTaskExecutor-1 com.test.MyListener:921 -
Successfully refreshed JMS Connection
13:50:37,523 WARN msgListenersTaskExecutor-1 com.test.MyListener:871 -
Setup of JMS message listener invoker failed for destination
'queue://MY_INCOMING_QUEUE' - trying to recover. Cause: Local JMS
transaction failed to commit; nested exception is javax.j
ms.IllegalStateException: Not a transacted session
13:50:37,523 INFO msgListenersTaskExecutor-1 com.test.MyListener:921 -
Successfully refreshed JMS Connection
13:50:43,534 WARN msgListenersTaskExecutor-1 com.test.MyListener:871 -
Setup of JMS message listener invoker failed for destination
'queue://MY_INCOMING_QUEUE' - trying to recover. Cause: Local JMS
transaction failed to commit; nested exception is javax.j
ms.IllegalStateException: Not a transacted session
...
----------------------------------
Pls let me know your thoughts.
--
View this message in context:
http://tomee-openejb.979440.n4.nabble.com/Tomee-MySql-ActiveMQ-XA-Distributed-Transactions-tp4676680p4676746.html
Sent from the TomEE Users mailing list archive at Nabble.com.