0

私は、改良/近代化されているプロジェクトに取り組んでおり、その中に小さなRMIピースが含まれていますが、残念ながら、これまでRMIを使用したことはありませんでした。

私が理解できないことの1つは、最初にRMIクライアントを作成した後、カスタムSocketFactoryコンストラクターを呼び出し続ける理由です。クライアントとサーバーの間にトラフィックがない場合でも、コンストラクターが呼び出されるという出力が5分ごとに表示されるように見えます。

ですから、クライアントを終了するか、何らかの方法でクライアントをクリーンアップして、それを停止する方法があるはずですが、それが何であるかはわかりません。

次のようにRMI接続を設定します。

UnicastRemoteObject.exportObject(this);
TheServer rmiServer = (TheServer)Naming.lookup(s); // where s is some rmi:// url

したがって、サーバーのメソッドにアクセスして、クライアントのメソッドを呼び出すことができます。

接続が完了したら、永続化するスレッドをクリーンアップして停止するにはどうすればよいですか?

UnicastRemoteObjectをチェックアウトしていましたが、unexportObjectメソッドを使用する必要があるかもしれません。

しかし、とにかくこのカスタムSocketFactoryはどのように呼び出されますか?クライアントの名前などからクラス名を取得することによってそれを見つけているバックグラウンドでの何らかの反映がない限り、私のプロジェクトではそのクラス名への参照はまったくありません...

4

1 に答える 1

1

Distributed Garbage Collection の効果が見られます。スタブを使い終わったら、すべてのローカル参照を解放して、ローカルでガベージ コレクトします。その後、DGC も停止し、そのリモート オブジェクトに対するすべてのネットワーク アクティビティが停止します。

于 2013-01-25T05:56:32.343 に答える