Looking for an error, you have one XA resource and one JCA LocalTransaction
WTRN0089I: XATransactionWrapper @ 3fbe3fbe XAResource: com.ibm.ejs.jms.JMSManagedSession$JMSXAResource@3fb83fb8 credited: true mcWrapper.hashCode () 1038237154: Voting: commit.
and
WTRN0089I: LocalTransactionWrapper @: 4e2e4e2e LocalTransaction: com.ibm.ejs.jms.JMSManagedSession $ JMS LocalTransaction @ 4e5a4e5a credited: true registeredForSynctruemcWrapper.hashcode () 1032076676: Vote: none.
It looks like you either did not install ConnectionFactory in XA, but you see:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/umj_pjcfm.html
(scroll down to "XA Enabled") or the Tibco EMS connection does not support XA. If this is the last one and there is no suitable XA driver, you can see the Last-Partant support in the WAS info center, which can do what you need - that is, the WAS will prepare the WMQ XA transaction, transmit Tibco locally, and then commit WMQ if the transaction is Tibco works (or rollback otherwise). If the Tibco connection is XA-compliant, WAS has full XA support for embedded WMQ, so there is no reason not to use a two-phase transaction for the entire operation.
Relatively
The QueueConnectionFactory instance is com.ibm.ejs.jms.JMSQueueConnectionFactoryHandle. Can I get an XAConnection from this? Do I need to? I would rather stay with Vanilla JMS if possible.
You should not do this, just stick with a simple JMS. As a general style style, it is best to add to ConnectionFactory (not QueueConnectionFactory) and then stay with cross-domain objects (Connection, Session, MessageProducer).
source share