We are trying to use IBM MQ manager as XA Transaction manager with spring-jms and spring transaction support. Does IBM MQ manager play well with spring-jta support?
You can't use the WMQ JMS client (which is what spring-jms would use) with the MQ QueueManager acting as the XA transaction manager. The intention is that a JMS application would be controlled via a JTA implemented transaction manager (i.e. a Java EE application server).
You can however use the WMQ Java client (i.e. non JMS) and have the MQ QueueManager act as the XA transaction manager (non JTA).
As @COLINHY said you can use it the other way around. The Spring transaction manager will be the coordinator using JTA and the spring-jms can then be used to bring in the WMQ JMS client and MQ Queue Manager as a transactional resource.
We used in the reverse way: Using Spring transaction management as the global transaction manager, MQ XA as one of the transaction branches. It worked fine.
To clarify the support for MQ JMS client.
When installed within a JavaEE certified server, the MQ Resourced Adapter (powered by the JMS Client) will result in the MQ QueueManager working in a Resource Manager role, co-ordinated by the JavaEE Server.
Outside of the JavaEE environment the JMS Client is not supported when working with any other JTA provider. (if this of interest please raise a requirement)
With the MQ Java Classes (aka Base Java) - MQ can be a Transaction Manager but only with it co-ordinating itself MQ and a DB (such as Oracle and DB2). It's not possible to get MQ to co-ordinate anything else.
来源:https://stackoverflow.com/questions/24957045/ibm-mqmanager-as-xa-transaction-manager-with-spring-jms-and-spring-tx