Глядя на ошибку, у вас есть один ресурс XA и одна JCA LocalTransaction
WTRN0089I: XATransactionWrapper @ 3fbe3fbe XAResource: com.ibm.ejs.jms.JMSManagedSession$JMSXAResource@3fb83fb8 зачислено: true mcWrapper.hashCode () 1038237154: голосование: зафиксировать.
и
WTRN0089I: LocalTransactionWrapper @: 4e2e4e2e LocalTransaction: com.ibm.ejs.jms.JMSManagedSession $ JMS LocalTransaction @ 4e5a4e5a зачислено: true зарегистрированныйForSynctruemcWrapper.hashcode () 1032076676: голосование: нет
Похоже, вы либо не включили ConnectionFactory в XA, см .:
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/umj_pjcfm.html
(прокрутите вниз до «XA Enabled») или соединение Tibco EMS не поддерживает XA. Если это последний вариант, и нет подходящего драйвера XA, то вы можете посмотреть поддержку последнего участника в инфоцентре WAS, которая может сделать то, что вам нужно - то есть WAS подготовит транзакцию WMQ XA, локально зафиксирует Tibco, а затем зафиксирует WMQ, если фиксация Tibco сработала (или произойдет откат в противном случае). Если соединение Tibco поддерживает XA, то в WAS встроена полная поддержка XA для WMQ, поэтому нет причин не использовать двухфазную транзакцию для всей операции.
Относительно
Экземпляр QueueConnectionFactory является com.ibm.ejs.jms.JMSQueueConnectionFactoryHandle. Могу ли я получить XAConnection от этого? Нужно ли мне? Я бы предпочел остаться с ванильным JMS, если это возможно.
Вы не должны этого делать, просто придерживайтесь простого JMS. В качестве общей точки стиля лучше также приводить к ConnectionFactory (не QueueConnectionFactory), а затем использовать междоменные объекты (Connection, Session, MessageProducer).