モジュール java.rmi
パッケージ 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
    • コンストラクタの詳細

      • RMISocketFactory

        public RMISocketFactory()
        RMISocketFactoryを構築します。
        導入されたバージョン:
        1.1
    • メソッドの詳細

      • createSocket

        public abstract Socket createSocket​(String host,
                                            int port)
                                     throws IOException
        指定されたホストとポートに接続されるクライアント・ソケットを作成します。
        定義:
        createSocket、インタフェース: RMIClientSocketFactory
        パラメータ:
        host - ホスト名
        port - ポート番号
        戻り値:
        指定されたホストとポートに接続されるソケット
        例外:
        IOException - ソケットの作成時に入出力エラーが発生した場合
        導入されたバージョン:
        1.1
      • createServerSocket

        public abstract ServerSocket createServerSocket​(int port)
                                                 throws IOException
        指定ポート用のサーバー・ソケットを作成します。ポート0は匿名ポートを示します。
        定義:
        createServerSocket、インタフェース: RMIServerSocketFactory
        パラメータ:
        port - ポート番号
        戻り値:
        指定されたポートのサーバー・ソケット
        例外:
        IOException - サーバー・ソケットの作成時に入出力エラーが発生した場合
        導入されたバージョン:
        1.1
      • setSocketFactory

        public static void setSocketFactory​(RMISocketFactory fac)
                                     throws IOException
        リモート・オブジェクトが特定のクライアント・ソケット・ファクトリまたはサーバー・ソケット・ファクトリに関連付けられていない場合に、RMIがソケットを取得するグローバル・ソケット・ファクトリを設定します。 RMIソケット・ファクトリは、1つしか設定できません。 注:RMISocketFactoryは現在のセキュリティ・マネージャがソケット・ファクトリの設定を許可している場合にかぎり設定できるという点に注意してください。許可されていない場合には、SecurityExceptionがスローされます。
        パラメータ:
        fac - ソケット・ファクトリ
        例外:
        IOException - RMIソケット・ファクトリがすでに設定されている場合
        SecurityException - セキュリティ・マネージャが存在し、そのcheckSetFactoryメソッドでこの操作が許可されていない場合。
        導入されたバージョン:
        1.1
        関連項目:
        getSocketFactory(), SecurityManager.checkSetFactory()
      • getSocketFactory

        public static RMISocketFactory getSocketFactory()
        setSocketFactoryメソッドによって設定されたソケット・ファクトリを返します。 ソケット・ファクトリが設定されていない場合はnullを返します。
        戻り値:
        ソケット・ファクトリ
        導入されたバージョン:
        1.1
        関連項目:
        setSocketFactory(RMISocketFactory)
      • getDefaultSocketFactory

        public static RMISocketFactory getDefaultSocketFactory()
        このRMIの実装に使用される、デフォルトのソケット・ファクトリへの参照を返します。 このファクトリは、getSocketFactoryからnullが返された場合に、RMIランタイムによって使用されます。
        戻り値:
        デフォルトのRMIソケット・ファクトリ
        導入されたバージョン:
        1.1
      • setFailureHandler

        public static void setFailureHandler​(RMIFailureHandler fh)
        サーバー・ソケットの作成が失敗した場合に、RMIのランタイムが呼び出すエラー・ハンドラを設定します。 デフォルトでは、もしエラー・ハンドラがインストールされておらず、サーバー・ソケットの作成が失敗した場合には、RMIランタイムはサーバー・ソケットの作成を再試行します。

        セキュリティ・マネージャが存在する場合、この操作が許可されるように、このメソッドは最初にセキュリティ・マネージャのcheckSetFactoryメソッドを呼び出します。 この結果、SecurityExceptionになることがあります。

        パラメータ:
        fh - エラー・ハンドラ
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckSetFactoryメソッドでこの操作が許可されていない場合。
        導入されたバージョン:
        1.1
        関連項目:
        getFailureHandler(), RMIFailureHandler.failure(Exception)
      • getFailureHandler

        public static RMIFailureHandler getFailureHandler()
        setFailureHandlerメソッドによって設定されたソケット作成エラー・ハンドラを返します。
        戻り値:
        エラー・ハンドラ
        導入されたバージョン:
        1.1
        関連項目:
        setFailureHandler(RMIFailureHandler)