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