4

私はテストプログラムTを持っています:

  • サーバーSRemoteの RMI レジストリからオブジェクト Oのスタブを取得します。
  • 何百もの並列スレッドで、このオブジェクトOのメソッドを呼び出します。

サーバーSに多くの「RMI TCP 接続」スレッドがあることがわかります。TにはOのスタブが 1 つしかないため、1 つしかないと予想していました。これはどのように作動しますか?

4

2 に答える 2

1

RMI には、スレッドごとのエンドポイントごとの接続が必要です。クライアント側でそれらをプールし、サーバー側でもプールが発生するため、実際にはそれほど悪くはありませんが、同時に RMI 呼び出しを実行する 1000 のスレッドがある場合、1000 の接続が確実に存在します。 . それらは多重化されていません。

于 2012-07-11T00:45:05.663 に答える
-1

RMI は、可能であればサーバー ソケットとクライアント ソケットを再利用しようとするはずです。

あなたのケースは、サーバーソケットファクトリが同等でない場合に発生します(equalsが実行されると、結果はfalseになり、接続が再度確立されます)。おそらく、スタブは hashCode と equals を実装していないため、ソケットが使用可能かどうかを知る確実な方法はありません。

于 2012-07-10T17:38:34.307 に答える