目次 | 前の項目 | 次の項目 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 にローカルで作成されたリモートスタブを返します。getRegistry メソッドを使って構築されたスタブを持つリモートレジストリとの通信では、提供された RMIClientSocketFactory csf を使って、リモートホストおよびポート上のレジストリへの Socket 接続を作成します。


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

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


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


目次 | 前の項目 | 次の項目
Copyright © 1997-2006 Sun Microsystems, Inc. All Rights Reserved.