4

私は Java RMI のトピックに取り組んでおり、クライアント側の接続プールに関する情報が必要です。文献やドキュメントには、これらのトピックに対する明確な答えはありません。接続プーリングが RMI 仕様の一部ではないことは知っています。しかし、一部の実装 (たとえば、SUN の実装) では、それが行われています。したがって、私の質問はこの実装に関するものです。

プールには RMI ソケットファクトリで作成されたソケット (java.net.Socket) がキャッシュされていると思います。あれは正しいですか?

これらの接続はどのように保存されますか? 宛先 IP/ポートをキーとして、ソケットを値として HashMap が使用されることを除いては。

ソケットは、タイムアウトを使用して閉じられます。接続アイドル時間に関する情報はどのように取得されますか? 接続が最後に使用されたときに何らかのタイムスタンプがある可能性があります。

4

2 に答える 2

2

私が話しているのは Sun の実装だけであることに注意してください。

プールには RMI ソケットファクトリで作成されたソケット (java.net.Socket) がキャッシュされていると思います。あれは正しいですか?

はい、リモート呼び出しから解放された後、もちろん、リモート呼び出しは、ソケットファクトリに新しいソケットの作成を要求する前に、最初にプールを調べます。

これらの接続はどのように保存されますか? 宛先 IP/ポートをキーとして、ソケットを値として HashMap が使用されることを除いては。

ip:port から Socket へのマップが論理的に存在する必要があるとだけ言っておきましょう。実装の詳細は実際には重要ではありません。

ソケットは、タイムアウトを使用して閉じられます。接続アイドル時間に関する情報はどのように取得されますか?

接続がプールに入れられた時間を記録する。

于 2012-04-10T10:15:52.323 に答える