モジュール 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
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    RMISocketFactoryを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    abstract ServerSocket
    createServerSocket​(int port)
    指定ポート用のサーバー・ソケットを作成します。ポート0は匿名ポートを示します。
    abstract Socket
    createSocket​(String host, int port)
    指定されたホストとポートに接続されるクライアント・ソケットを作成します。
    このRMIの実装に使用される、デフォルトのソケット・ファクトリへの参照を返します。
    setFailureHandlerメソッドによって設定されたソケット作成エラー・ハンドラを返します。
    setSocketFactoryメソッドによって設定されたソケット・ファクトリを返します。
    static void
    サーバー・ソケットの作成が失敗した場合に、RMIのランタイムが呼び出すエラー・ハンドラを設定します。
    static void
    リモート・オブジェクトが特定のクライアント・ソケット・ファクトリまたはサーバー・ソケット・ファクトリに関連付けられていない場合に、RMIがソケットを取得するグローバル・ソケット・ファクトリを設定します。

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • 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)