1

これは簡単な質問のように思えるかもしれませんが、明確な答えが見つかりません。

ローカルのファイアウォールのないネットワーク上に3つのサーバーがあり、そのうちの1つはレジストリ(R)で、他の2つはクライアント(AとB)であり、クライアントAとBは両方ともレジストリに接続するとします。

クライアントAは、レジストリを介してBにエクスポートされたオブジェクトへの参照を取得し、メソッドを呼び出します-そのメソッド呼び出しはレジストリを通過しますか?つまり、Aがメソッド呼び出しのパラメーターとして大きなバイト配列をBに渡す場合、それはRを介して2ホップかかりますか、それともレジストリはAにBが直接通信できることを通知しますか?

4

1 に答える 1

2

いいえ、クライアントからサーバーへの呼び出しは RMI レジストリを通過しません。レジストリは、サーバーへの参照を検索するためにのみ使用されます。サーバーへの後続の呼び出しは、そこに直接行きます。

RMI レジストリは実際には RMI サーバーそのものにすぎず、登録するサーバーのリモート スタブを受け入れて格納します。サーバーの場所がわからないクライアントに既知のエントリ ポイントを提供します。RMI スタブがクライアントに返され、クライアントはそのスタブを介してサーバーと直接通信します。

于 2012-05-16T16:22:44.097 に答える