|
Java プラットフォーム 1.2 |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||
参照:
説明
| インタフェースの概要 | |
| BindingIterator | BindingIterator インタフェースを使うと、クライアントは next_one または next_n を使ってバインディングを次々に返すことができます。 |
| NamingContext | ネーミングコンテキストは、それぞれが一意の名前を持つ一連のネームバインディングを格納するオブジェクトです。 |
Java IDL のネームサービスを提供します。
このパッケージ、およびこのパッケージに含まれているすべてのクラスおよびインタフェースは、OMG IDL で記述されたモジュールであるファイル nameservice.idl で、idltojava ツールを実行することにより生成されています。
インタフェースは次の 2 つです。
この 2 つのインタフェースは、名前とオブジェクト参照のバインドとアンバインド、バインドされたオブジェクト参照の取得、およびバインディングをリストから次々に返すための手段を提供します。NamingContext インタフェースは、ネームサービスの主要な機能を提供し、BindingIterator インタフェースは、名前とオブジェクト参照のバインディングをリストから次々に返すための手段を提供します。
NamingContext インタフェースおよび BindingIterator インタフェースによって使用されます。補助クラスについてのコメントを次に示します。
NamingContext および BindingIterator によって使用されるクラスpublic final class NameComponent -- 名前の基本単位です。名前は、ネーミングコンテキストでオブジェクト参照にバインドされます。
名前は、1 つまたは複数の NameComponent オブジェクトからなる配列です。1 つの NameComponent を持つ名前を「単純名」と呼び、複数の NameComponent オブジェクトを持つ名前を「複合名」と呼びます。
NameComponent オブジェクトは 2 つのフィールドから構成されています。
id -- 識別子として使用される String
kind -- 記述の目的で使用される String。これは、構文に影響を与えることなくオブジェクトを記述できるという点で重要です。たとえば、C プログラミング言語では、ソースコードファイルであることを示すために、ファイル名に「.c」拡張子を付加する構文規則が用いられます。NameComponent オブジェクトでは、ファイル拡張子などの構文規則を使わずに、kind フィールドを使ってオブジェクトの型を記述することができます。kind フィールドの値の例としては、"c_source"、"object_code"、"executable"、"postscript"、"" などの文字列があります。kind フィールドが空の文字列であることもよくあります。
名前では、最後の NameComponent オブジェクト以外の各 NameComponent オブジェクトは NamingContext を表します。最後の NameComponent オブジェクトはバインドされているオブジェクト参照を表します。これは、最後の名前がファイル名で、その前のすべての名前がディレクトリ名を表すパス名の形式と似ています。
public final class Binding -- 名前をオブジェクト参照またはネーミングコンテキストに関連付けるオブジェクトです。Binding オブジェクトには次の 2 つのフィールドがあります。
binding_name - バインドされた名前 binding_type を表す 1 つまたは複数の NameComponent オブジェクトからなる配列です。BindingType オブジェクトは、バインディングの種類、つまり、名前とオブジェクト参照のバインディングか、名前とネーミングコンテキストのバインディングかを示します。
NamingContext インタフェースには、名前とオブジェクト参照または名前とネーミングコンテキストのバインドやアンバインド、バインディングのリストの取得、バインディングの解決 (名前を指定すると、resolve メソッドがその名前にバインドされているオブジェクトを返すこと) のためのメソッドがあります。
public final class BindingType -- 指定された Binding オブジェクトが、名前と (ネーミングコンテキストではなく) オブジェクト参照のバインドか、あるいは名前とネーミングコンテキストのバインドかを指定するオブジェクトです。
BindingType クラスは、2 つのメソッドと 4 つの定数からなります。それらの定数のうちの 2 つは BindingType オブジェクトで、残りの 2 つは int です。
BindingType オブジェクトは、Binding クラスのコンストラクタに渡したり、パラメータまたは戻り値として使用したりすることができます。BindingType オブジェクトには、次のものがあります。
public static final BindingType nobject -- オブジェクト参照とのバインディングであることを示す
public static final BindingType ncontext -- ネーミングコンテキストとのバインディングであることを示す
int 定数は、BindingType オブジェクトを作成するために from_int メソッドに指定したり、メソッド value の戻り値として使用したりすることができます。このような定数には次のものがあります。
public static final int _nobject
public static final int _ncontext
from_int メソッドに _nobject または _ncontext 以外何も指定されなかった場合は、org.omg.CORBA.BAD_PARAM 例外がスローされます。
使用例を次に示します。
BindingType btObject = from_int(_nobject); BindingType btContext = from_int(_ncontext);変数
btObject は、オブジェクト参照とのバインディングを表すために初期化された BindingType オブジェクトを参照します。変数 btContext は、NamingContex オブジェクトとのバインディングを表すために初期化された BindingType オブジェクトを参照します。
value メソッドは _nobject または _ncontext を返します。したがって次のコードでは、変数 bt には _nobject または _ncontext が格納されます。
int bt = BindingType.value();
value フィールドに代入することができます。これにより、OUT パラメータまたは INOUT パラメータの機能を果たすことができます。
org.omg.CosNaming パッケージでは、次のホルダークラスが生成されます。
NamingContextHolder
BindingIteratorHolder
BindingHolder
BindingListHolder
BindingTypeHolder
NameComponentHolder
NameHolder
org.omg.CORBA パッケージでは、Java の基本型のそれぞれについて、ホルダークラス (IntHolder、ShortHolder、StringHolder など) があります。
また、Name クラスがない場合でも NameHolder クラスがあります。同様に、BindingList クラスがない場合でも BindingListHolder があります。これは、OMG IDL インタフェースでは、Name および BindingList が typedef であるためです。IDL の typedef から Java の構造体へマッピングすることはできませんが、typedef がシーケンス用または配列用である場合はホルダークラスが生成されます。Java プログラミング言語にマッピングされた場合は、Name は NameComponent オブジェクトの配列になり、BindingList は Binding オブジェクトの配列になります。
すべてのホルダークラスは、2 つ以上のコンストラクタと 1 つのフィールドを持ちます。
value フィールド -- OUT パラメータまたは INOUT パラメータとして使用される型のインスタンス。たとえば、NamingContextHolder の value フィールドは NamingContext オブジェクトになる
BindingHolder オブジェクトの value フィールドは null に設定される。これはその値がオブジェクトの既定値だからである。このほかの既定値としては、boolean の false、numeric 型および char 型の 0、オブジェクト参照の null などがある
value フィールドが初期化されたホルダーオブジェクトを新しく生成するコンストラクタ
ユーザ定義型 (Java クラス) のホルダークラスには、このほかに 3 つのメソッドがありますが、アプリケーション開発者が直接これらのメソッドを使うことはありません。
ヘルパークラスには、アプリケーションプログラマが使用するメソッドが 1 つだけあります。narrow メソッドです。IDL インタフェースからマッピングされた Java インタフェースだけが、narrow メソッドのあるヘルパークラスを持ちます。このため、CosNaming パッケージでは、NamingContextHelper クラスと BindingIteratorHelper クラスだけに narrow メソッドがあります。
public static NamingContext narrow(org.omg.CORBA.Object obj) -- 指定された CORBA オブジェクトを NamingContext オブジェクトに変換する
public static BindingIterator narrow(org.omg.CORBA.Object obj) -- 指定された CORBA オブジェクトを BindingIterator オブジェクトに変換する
org.omg.CosNaming.NamingContextPackage パッケージorg.omg.CosNaming パッケージで使用される例外と、NotFound 例外の理由を提供する NotFoundReason クラスの Helper クラスおよび Holder クラスを提供します。
次の例外の Helper クラスおよび Holder クラスがあります。
AlreadyBound
CannotProceed
InvalidName
NotEmpty
NotFound
CosNaming API の概要および使用例については、以下を参照してください。
Java IDL の概要については、以下を参照してください。
|
Java プラットフォーム 1.2 |
|||||||||
| 前のパッケージ 次のパッケージ | フレームあり フレームなし | |||||||||