目次|| Java Remote Method Invocation


6.2 LocateRegistryクラス

java.rmi.registry.LocateRegistryクラスが使用されるのは、ローカル・ホストを含む特定のホスト上にあるブートストラップのリモート・オブジェクト・レジストリへの参照(スタブを構築する)の取得、あるいは特定のポートでの呼出しを受け入れるリモート・オブジェクト・レジストリの作成のためです。

レジストリは、単純で単調な命名法を実装し、リモート・オブジェクトの名前(文字列)をリモート・オブジェクトへの参照に関連付けます。名前とリモート・オブジェクトのバインディングは、サーバーを再起動すると失われます。

getRegistryの呼出しは、リモート・ホストへの接続を実際に確立するわけではありません。実際には、リモート・レジストリへのローカル参照が作成されるだけであり、これはリモート・ホスト上でレジストリが実行されていない場合でも行われます。したがって、このメソッドによって返されたリモート・レジストリを呼び出す後続のメソッドは失敗する場合もあります。

package java.rmi.registry;

public final class LocateRegistry {

        public static Registry getRegistry()
                throws java.rmi.RemoteException {...}
        public static Registry getRegistry(int port)
                throws java.rmi.RemoteException {...}
        public static Registry getRegistry(String host)
                throws java.rmi.RemoteException {...}
        public static Registry getRegistry(String host, int port)
                throws java.rmi.RemoteException {...}
        public static Registry getRegistry(String host, int port,
                                           RMIClientSocketFactory csf)
                throws RemoteException {...}
        public static Registry createRegistry(int port)
                throws java.rmi.RemoteException {...}
        public static Registry createRegistry(int port,
                                              RMIClientSocketFactory csf, 
                                              RMIServerSocketFactory ssf) 
                throws RemoteException {...}
}


最初の4つのgetRegistryメソッドは、現在のホスト上のレジストリ、指定されたポートの現在のホスト上のレジストリ、指定されたホストのレジストリ、または指定されたホストの特定ポートのレジストリへの参照を返します。ここで返されるのは、特定のホストやポートの情報を含むレジストリへのリモート・スタブです。

RMIClientSocketFactoryを引数の1つに取る、5番目のgetRegistryメソッドは、指定されたホストおよびポート上のリモート・オブジェクトRegistryにローカルで作成されたリモート・スタブを返します。このメソッドを使って構築されたスタブを持つリモート・レジストリとの通信では、提供されたRMIClientSocketFactory csfを使って、リモート・ホストおよびポート上のレジストリへのSocket接続を作成します。


注意 - getRegistryメソッドから返されるレジストリは、既知のオブジェクト識別子を含んだ特別に構築されたスタブです。あるJVMから別のJVMにレジストリ・スタブを渡す機能は、サポートされていません。ただし、実装によって成功する場合としない場合があります。LocateRegistry.getRegistryメソッドを使用して、ホスト用の適切なレジストリを取得してください。
createRegistryメソッドは、ローカル・ホストの特定のポートでレジストリを作成してエクスポートします。

2番目のcreateRegistryメソッドによるレジストリとの通信には、さらに柔軟性があります。この呼出しにより、レジストリとの通信にカスタム・ソケット・ファクトリを使うローカル・ホスト上のRegistryが、作成およびエクスポートされます。作成されるレジストリは、提供されたRMIServerSocketFactoryにより作成されたServerSocketを使って、特定のポートで受信する要求に備えて待機します。このレジストリへの参照を受け取るクライアントは、提供されたRMIClientSocketFactoryにより作成されたSocketを使います。


注 - createRegistryメソッドによるレジストリの開始時には、サーバーのプロセスはアクティブに保たれません。


目次||
Copyright 1997, 2010, Oracle and/or its affiliates. All rights reserved.