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...
}