У меня есть простое приложение JMS, развернутое на OC4J под сервером AIX, в моем приложении я прослушиваю некоторые очереди и отправляю в другие очереди на Websphere MQ, развернутом под сервером AS400.
Проблема в том, что мои соединения с этими очередями разрываются/закрываются, когда они какое-то время бездействуют с ошибкой 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...
}