Tengo un MDB en WebSphere 6. El MessageListener está vinculado a una cola Tibco EMS. En el MDB, intento escribir en una cola de WebSphere MQ. Me sale el siguiente error:Un intento ilegal de comprometer un recurso capaz de una fase con recursos existentes con capacidad de dos fases
WMSG0042I: MDB Listener LoanIQ Payments Inbound started successfully for JMSDestination jms/eid/payments
WTRN0063E: An illegal attempt to commit a one phase capable resource with existing two phase capable resources has occurred.
WTRN0086I: XAException encountered during prepare phase for transaction 00000131...0001. Local resources follow.
WTRN0089I: [email protected] 3fbe3fbe XAResource: [email protected] enlisted: true mcWrapper.hashCode()1038237154: Vote: commit.
WTRN0089I: [email protected]:4e2e4e2e LocalTransaction:com.ibm.ejs.jms.JMSManagedSession$JMS [email protected] enlisted:true registeredForSynctruemcWrapper.hashcode()1032076676: Vote: none.
La instancia QueueConnectionFactory es un com.ibm.ejs.jms.JMSQueueConnectionFactoryHandle
. ¿Podría obtener una XAConnection de esto? ¿Realmente necesito? Prefiero quedarme con el JMS de vainilla si es posible.
La implementación de MDB es similar a:
public void onMessage(Message message) {
// ^^ incoming message delivered from EMS queue via WAS MessageListener
TextMessage textMessage = (TextMessage) message;
QueueConnectionFactory factory = (QueueConnectionFactory) context.lookup(factoryName);
Queue queue = (Queue) context.lookup(queueName);
QueueConnection connection = factory.createQueueConnection();
connection.start();
QueueSession session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
QueueSender sender = session.createSender(queue);
TextMessage message = session.createTextMessage("some new payload");
sender.send(message);
// ^^ outgoing message sent to WebSphere MQ queue
}
MQ estaba habilitado para XA. Parece que los controladores EMS no lo eran. [Habilitando LPS] (https://www.ibm.com/developerworks/wikis/display/xdcomputegrid/Enabling+last+participant+support) funcionó. Gracias. – Synesso
El enlace para habilitar LPS se encuentra aquí. http://www-01.ibm.com/support/docview.wss?uid=swg21244805 – asgs