サーブレットコンテナ、つまりTomcatで長寿命のXMPP接続を管理する方法についてのコメントがあります。サーブレット経由でのXMPPサーバーへのログインの処理
基本的には、ログイン資格情報をサーブレットに送信するクライアントがあり、セッションごとにXMPPConnectionを作成し、HttpSessionに格納します。
簡単に言うと、クライアントは、ログイン、メッセージの送受信、ログアウトの4つの操作を実行できます。
(1)ご覧のとおり、XMPPConnectionの有効期間は、クライアント によって処理(制御)される必要があります。私たちの場合、HttpSessionにはタイムアウトが関連付けられています。 HttpSessionへの依存は間違いだと思いますか?
(2)ガベージコレクションの観点からは、HttpSessionがタイムアウトしたときに問題がありますか? 特にXMPPConnection.disconnect()を呼び出さないでください。タイムアウトに達すると、Sessionスコープ内のすべてのオブジェクトがGCされます。 XMPPConnectionがまだ接続されていれば、VMはそれを見て無視しますか?
(3)HttpSessionのタイムアウトと無効化の違いは何ですか?タイムアウトは特定のオブジェクトを参照していますが、無効化 はすべてを削除します。
ありがとうございました。それがあなたのために働いたことを知ってうれしいです(re:XMPPConnection in HttpSession)。代わりにSessionAttributeListenerを使用します。それは同じ目標を達成するはずです。 –