0

私の jsps では、セッション Bean を使用しています。一部の Bean には、メンバー変数として JNDI(LDAP) またはソケットがあります。そのため、Bean が初期化されると、この接続も開かれます。

私の問題は、ログアウトすると、これらのソケットまたは JNDI 接続が機能しないことです。それらはメモリに残り、Tomcat に割り当てられたファイル記述子を消費しています。

これらの接続が finalizer() によって閉じられないのはなぜですか?

セッションの有効期限が切れた後にすべての接続をクリーンアップするものはありますか? (多くのコードを変更する必要があるセッションリスナーは別として?

4

1 に答える 1

0

ファイナライザーをまったく使用しないでください。これらは、オブジェクトがガベージ コレクションされたときに実行する必要がありますが、EJB がいつ GC されたのか、さらには GC されたのかさえわかりません。

したがって、ここでの答えは「接続を開いたままにしない」です。これは、ソケット、JNDI、データベース、およびその他の多くのリソースに適用されます。

于 2013-07-11T08:36:30.497 に答える