私は、単純なJMSアプリケーションを、アプリケーション内のAIXサーバー上のOC4Jにデプロイしました。いくつかのキューをリッスンし、AS400サーバー上にデプロイされたWebsphere MQ 。JMSを使用するWebsphere MQ、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()? – nos
問題は、Websphere MQ側で古いリスナー/プロデューサがスタックされているため、余分なジョブがMQに接続されているように見えます。 リカバリコードは問題なく実行されます –