2016-05-09 1 views
0

rmiクライアント用の静的ポートを設定する方法が必要です。サーバーは固定ポートを使用して接続しますが、クライアント側ではダイナミックポートを作成しますが、クライアントソケットファクトリを設定します。rmiクライアントの静的クライアントポートを設定するにはどうすればよいですか?

見つかった根本原因は、クラス "TCPChannel"です。このクラスでは、私はこのコードを参照してください。

TCPEndpoint.getLocalEndpoint(0, (RMIClientSocketFactory)null, (RMIServerSocketFactory)null);

このコードは私のソケットファクトリを認識していないので、これは明らかに動作しません。明らかに、このクラスはRMI固有ではありません。

質問があります - それは全く動的ポートを作成しないように、TCPソケットの作成をオーバーライドする方法はありますか?

答えて

0

私はクライアントソケットファクトリを設定しましたが、クライアント側で動的ポートを作成します。

どのように設定しましたか?あなたが何をしたとしても、あなたはそれを正しくしませんでした。

しかし、どうしてですか?多くの欠点があります。 1つ目は、そのクライアントからのすべてのRMI呼び出しを2分間隔でシーケンシャルにするか、より頻繁な間隔で任意の呼び出しをBindExceptionsで失敗させる可能性があります。

もう1つは、DGCに悪影響を及ぼす可能性があります。

実際の利益はまったくありません。

もちろん、このクラスはRMI固有ではありません。

どのようなクラスですか?それについては何が分かりますか?

+0

クライアントソケットファクトリを次のように設定します。RMISocketFactory.setSocketFactory(new RMIClientSocketFactoryWithSocketAdaptor(opts)); RMIClientSocketFactoryWithSocketAdaptorはソケットファクトリに対する私のインプリメンテーションです。 ダイナミックに未知のポートを開くことを制限するセキュリティ要件の一部として、スタティックポートを持つ必要があります。 私が参照していたRMI固有でないクラスは 'TCPChannel'です。 – YaOg

+0

それは約18年古いです。近代的なやり方は、オブジェクトを*サーバにエクスポートするときに 'RMIClientSocketFactory'を提供することです。 'TCPChannel'は100%RMIに固有であり、他の目的には使用されません。あなたが与えたセキュリティ要件は100%無意味なので、有能な人が見直す必要があります。アウトバウンドポートについてのファイアウォールルールを作ることができるからといって、**良い意味ではありません。そうではありません。私は20年近くここや他の場所で言ってきましたが、私は反論や反例を見たことがありません。有効なポイントは – EJP

+0

です。我々は再考する。ありがとう。 – YaOg

関連する問題