【发布时间】:2010-11-24 18:10:41
【问题描述】:
我在 AIX 服务器下的 OC4J 上部署了一个简单的 JMS 应用程序,在我的应用程序中,我正在监听一些队列并发送到部署在 AS400 服务器下的 Websphere MQ 上的其他队列。
问题是我与这些队列的连接在空闲一段时间并出现错误MQJMS1016 (这不是问题)时被终止/关闭,当这种情况发生时我尝试恢复连接并且它可以工作,但是,旧连接卡在 MQ 上并且在手动终止之前不会终止。
恢复代码如下:
public void recover() {
cleanup();
init();
}
public void cleanup(){
if (session != null) {
try {
session .close();
} catch (JMSException e) {
}
}
if (connection != null) {
try {
connection.close();
} catch (JMSException e) {
}
}
}
public void init(){
// typical initialization of the connection, session and queue...
}
【问题讨论】:
-
但是问题是什么,它在哪里“卡住” - 在 session.close() 中?
-
问题是在 Websphere MQ 端,旧的侦听器/生产者被卡住了,所以我将有额外的工作似乎连接到 MQ。恢复代码运行没有问题
标签: java jms websphere message-queue ibm-mq