3 月に websphere mq をバージョン 6 から 7 に更新しました。これを毎月行っていたため、アプリケーションがメッセージを MQ キューに入れようとしている間に 1 つのトランザクションが失われました。次のエラーが表示されます。
[8/1/12 11:37:53:163 MEST] 00000361 LocalTranCoor E WLTC0016E: リソース JMS$QueueConnectionFactory$JMSManagedConnection@1276 を完了できませんでした。例外スタック トレースは次のとおりです。 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 com.ibm.msg.client.commonservices.j2se.NLSServices.createException(NLSServices.java:313) の .newInstance(Constructor.java:513) 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();
}
}
敬具、
トム