1

3 月,我们将 websphere mq 从版本 6 更新到了 7。因为我们每个月都这样做,所以当我们的应用程序尝试将消息放入 MQ 队列时,一个事务会丢失。我们得到这个错误:

[8/1/12 11:37:53:163 MEST] 00000361 LocalTranCoor E WLTC0016E:资源 JMS$QueueConnectionFactory$JMSManagedConnection@1276 未能完成。异常堆栈跟踪如下:com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:942) 处的 com.ibm.ejs.j2c.LocalTransactionWrapper.commit(LocalTransactionWrapper.java:283) 处的 javax.transaction.xa.XAException在 com.ibm.ws.LocalTransaction.LocalTranCoordImpl.complete(LocalTranCoordImpl.java:830) 在 com.ibm.ws.LocalTransaction.LocalTranCoordImpl.end(LocalTranCoordImpl.java:1424) 在 com.ibm.ejs.csi.TranStrategy.commit (TranStrategy.java:891) 在 com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:230) 在 com.ibm.ejs.csi.NotSupported.postInvoke(NotSupported.java:133) 在 com.ibm。 ejs.csi.TransactionControlImpl。JMSCC0020:此会话已关闭。一个应用程序调用了在会话关闭后不得使用的方法。确保在调用该方法之前会话未关闭。在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor .newInstance(Constructor.java:513) at com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:313) at com.ibm.msg.client.commonservices.nls.NLSServices.createException(NLSServices .java:388) 在 com.ibm.msg.client.jms.internal.JmsErrorUtils.createException(JmsErrorUtils.java:104) 在 com.ibm。

我们的应用程序不是为处理回滚操作而设计的,因此消息会丢失。我想知道自升级以来导致此问题的原因以及我们可以做些什么。

我们使用的java代码是:

public void sendMessage(QueueConnectionFactory connectionFactory, Queue queue, String text, int priority) throws JMSException{
        QueueConnection connection = null;

        try {   
            connection = connectionFactory.createQueueConnection();
            connection.start();

            QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
            QueueSender sender = session.createSender(queue);

            TextMessage message = session.createTextMessage(text);
            sender.send(message);

        } finally {
            if (connection!=null) 
                connection.close();
        }
    }

亲切的问候,

汤姆

4

0 回答 0