モジュール java.rmi
パッケージ java.rmi.server

クラスRMISocketFactory

java.lang.Object
java.rmi.server.RMISocketFactory
すべての実装されたインタフェース:
RMIClientSocketFactory, RMIServerSocketFactory

public abstract class RMISocketFactory extends Object implements RMIClientSocketFactory, RMIServerSocketFactory
RMISocketFactoryのインスタンスは、RMI呼出しのクライアント・ソケットおよびサーバー・ソケットを取得するためにRMIランタイムが使用します。 アプリケーションは、setSocketFactoryメソッドを使って、RMIランタイムに対して、デフォルトの実装の代わりにソケット・ファクトリのインスタンスを使うように要求することができます。

デフォルトのソケット・ファクトリ実装では、リモート・ホストへの直接ソケット接続が作成されます。

デフォルトのソケット・ファクトリの実装では、ワイルドカード・アドレスにバインドされるサーバー・ソケットが作成されます。これによって、すべてのネットワーク・インタフェースからの要求が受け入れられます。

実装上のノート:

RMISocketFactoryクラスを使用して、特定のアドレスにバインドされるサーバー・ソケットを作成し、要求元を制限できます。 たとえば、次のコードはサーバー・ソケットをIPv4ループバック・アドレスにバインドするソケット・ファクトリを実装します。 これによって、RMIはローカル・ホストからの要求のみを処理するように制限されます。


     class LoopbackSocketFactory extends RMISocketFactory {
         public ServerSocket createServerSocket(int port) throws IOException {
             return new ServerSocket(port, 5, InetAddress.getByName("127.0.0.1"));
         }

         public Socket createSocket(String host, int port) throws IOException {
             // just call the default client socket factory
             return RMISocketFactory.getDefaultSocketFactory()
                                    .createSocket(host, port);
         }
     }

     // ...

     RMISocketFactory.setSocketFactory(new LoopbackSocketFactory());
 
生成されたスタブが正しいネットワーク・インタフェースに接続されていることを確認するには、java.rmi.server.hostnameシステム・プロパティを127.0.0.1に設定します。

導入されたバージョン:
1.1