| 目次 | 前の項目 | 次の項目 | 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.