目次 | 前の項目 | 次の項目 | Java Remote Method Invocation |
Naming
クラスjava.rmi.Naming
クラスは、リモートオブジェクトレジストリ内のリモートオブジェクトへの参照の格納および取得のためのメソッドを提供します。Naming
クラスのメソッドは、引数の 1 つとして、次のような URL 形式のjava.lang.String
の名前をとります。
//host:port/namehost にはレジストリが置かれている (リモートまたはローカルの) ホスト、port にはレジストリが呼び出しを受け付けるポート番号、name にはレジストリによって解釈されない単純な文字列を指定します。host と port は、省略可能です。host を省略した場合は、ホストはローカルホスト (デフォルト) になります。port を省略した場合は、ポートは 1099 (デフォルト) になります。 これは、RMI のレジストリであるrmiregistry
が使用する既知のポートです。リモートオブジェクトに対する名前のバインディングとは、あとで使う可能性のあるリモートオブジェクトを検索できるように、そのリモートオブジェクトに名前を関連付けるか、あるいは登録することです。
Naming
クラスのbind
またはrebind
メソッドを使って、リモートオブジェクトに名前を関連付けることができます。リモートオブジェクトがローカルホスト上の RMI レジストリに登録 (バインド) されると、リモート (またはローカル) ホスト上の呼び出し側は、そのリモートオブジェクトを名前で検索し、参照を取得してから、オブジェクトのリモートメソッドを呼び出すことができます。レジストリは、あるホスト上で稼動するすべてのサーバで共有できます。 また、必要に応じて、個々のサーバプロセスで独自のレジストリを作成して使用することもできます。 詳細は、
java.rmi.registry.LocateRegistry.createRegistry
メソッドを参照してください。
package java.rmi;public final class Naming { public static Remote lookup(String url) throws NotBoundException, java.net.MalformedURLException, RemoteException; public static void bind(String url, Remote obj) throws AlreadyBoundException, java.net.MalformedURLException, RemoteException; public static void rebind(String url, Remote obj) throws RemoteException, java.net.MalformedURLException; public static void unbind(String url) throws RemoteException, NotBoundException, java.net.MalformedURLException; public static String[] list(String url) throws RemoteException, java.net.MalformedURLException; }
lookup
メソッドは、ファイル名の部分に関連するリモートオブジェクトを返します。この名前がオブジェクトとバインドされていなければ、NotBoundException
がスローされます。
bind
メソッドは、指定した名前をリモートオブジェクトにバインドします。その名前がすでにオブジェクトにバインドされているならば、AlreadyBoundException
をスローします。
rebind
メソッドは、名前がすでにバインドされていても、常に名前をオブジェクトにバインドします。このとき、古いバインディングは失われます。
unbind
メソッドは、リモートオブジェクトと名前のバインディングを解除します。バインドが存在していないならば、NotBoundException
をスローします。
list
メソッドは、レジストリにバインドされた URL のスナップショットを含むString
オブジェクトの配列を返します。レジストリにコンタクトして接続リストを得るために必要なのは、URL のホストとポート部分だけの情報です。 このため URL のファイル名の部分は無視されます。
注 -java.rmi.AccessException
は、これらのメソッドのいずれかの結果としてもスローされる場合があります。AccessException
は、呼び出し側が固有の操作を実行する権限を持たないことを示します。たとえば、レジストリを実行するホストに対してローカルなクライアントだけが、bind
、rebind
、およびunbind
の操作を実行することを許されます。しかし、lookup
操作は、ローカルでないどのクライアントからも起動できます。
目次 | 前の項目 | 次の項目
Copyright © 1997-1999 Sun Microsystems, Inc. All Rights Reserved.