1

RMI 経由で利用できるようにしているコードがいくつかあります。

私のプログラムが異常終了した場合、私は Naming.unbind() を呼び出しておらず、オブジェクトへの参照がおそらく RMI レジストリ内にぶら下がっており、同じ名前の Naming.bind() への後続の呼び出しは失敗します。

不正な参照が確実に片付けられるようにするにはどうすればよいですか?

4

1 に答える 1

-1

Distributed Garbage Collector (DGC) と呼ばれるものがあります。リースを使用して古いバインディングを追跡し、使用されなくなったら収集します。エクスポートする JVM のleaseValueシステム プロパティを設定して、バインドの有効期限が切れる時期を決定します。

値を低く設定しすぎると、ネットワーク トラフィックが増加します。設定が高すぎると、古い参照が長時間保持されることになります。オブジェクトがライブであることを確認するためだけに、クライアント側でルックアップ後にべき等メソッドを呼び出すことができます (または Weblogic スマート スタブのようなものを使用します)。サーバー側では、レジストリを確認し、バインドが存在する場合は登録を解除し (古い場合)、リモート オブジェクトを破棄して新しいオブジェクトをエクスポートするか、そのままにしておく (ライブの場合)。

于 2008-10-13T13:33:48.153 に答える