質問

RMIを介して利用可能にするコードがいくつかあります。

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

不正な参照がクリアされたことを確認するにはどうすればよいですか?

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top