|
|
|
|
|
CORBA ネーム・サービス・リファレンス
ここでは、次の内容について説明します。
CORBA ネーム・サービスのコマンド
CORBA ネーム・サービスは、CORBA ネーム・サービスのサーバ・プロセスを管理し、名前空間内の名前にオブジェクトをバインドまたはアンバインドし、名前空間の内容を表示するために以下のコマンドを提供します。
以下の節では、これらのコマンドについて説明します。
cns
概要
CORBA ネーム・サービスのサーバ・プロセスを制御します。
構文
cns CLOPT="[-A] [servoptsoptions] --
[-bbucketcount]
[-c]
[-d]
[-ffilename]
[-Mmaxiterators]
[-p [persiststoragefilename] ]"
説明
CORBA ネーム・サービスのサーバ・プロセスは、CORBA CosNaming 準拠のネーム・サービスを提供します。使用する BEA Tuxedo アプリケーションに対して、その BEA Tuxedo アプリケーションで使用するほかのサーバ・プロセスと同様に、CORBA ネーム・サービスのサーバ・プロセスとそのオプションを UBBCONFIG ファイルで定義する必要があります。UBBCONFIG ファイルの CLOPT パラメータで、ダブル・ハイフン(--) の後に、cns コマンド行オプションを入力します。コマンド行オプションには、以下のものがあります。
-b bucketcount
ネーミング・コンテキストをメモリ内にロケートするために、サーバ・プロセスが内部で使用するハッシュ・テーブルのバケット数を指定します。各ネーミング・コンテキストには、専用のハッシュ・テーブルがあります。BEA Tuxedo アプリケーションが各ネーミング・コンテキストでより少ない数のバインディングを使用する場合、小さなバケット数 (4 または 5 など) を使用します。BEA Tuxedo アプリケーションが各ネーミング・コンテキストでより大きな数 (1,000 など) のバインディングを使用する場合、大きなバケット数 (50 など) を使用します。
-c
CORBA ネーム・サービスのサーバ・プロセスが開始されたときに、永続ストレージ・ファイルを圧縮します。ネーミング・コンテキストおよびアプリケーション・オブジェクトが名前空間に追加され、名前空間から削除されるたびに、永続ストレージ・ファイルのサイズは増え続けます。圧縮によって、永続ストレージ・ファイルのサイズを可能な限り小さくすることができます。バインドされていないバインディングは圧縮時に削除されます。バインドされていないバインディングは、バインディングが関連付けられているオブジェクトが名前空間から削除されても名前空間内に残ります。-p コマンド行オプションは、-c コマンド行オプションの指定時に指定する必要があります。
-d
CORBA ネーム・サービスのサーバ・プロセスで、サーバ・プロセスの開始時に、関連付けのないコンテキストが削除されるようにします。関連付けのないコンテキストは、ほかのどのオブジェクトにもバインドされていないコンテキストです。一度もバインドされていない可能性もありますし、コンテキストにバインドされた後で明示的に、または再バインドの影響で破棄された可能性もあります。-p コマンド行オプションは、-d コマンド行オプションの指定時に指定する必要があります。
-f filename
CORBA ネーム・サービスのサーバ・プロセスが、名前空間のルートのインターオペラブル・オブジェクト・リファレンス (IOR) を書き込む先となるファイルを指定します。
-M maxiterators
任意の時点での未処理のバインディング・イテレータの最大数を定義します。
バインディング・イテレータは、クライアント・アプリケーションが CosNaming::NamingContext::list() メソッドを使用したときに作成されます。クライアント・アプリケーションは、使用を完了したバインディング・イテレータを削除するために、CosNaming::BindingIterator::destroy() メソッドを使用する必要があります。
クライアント・アプリケーションがバインディング・イテレータを特に削除しなかった場合、CORBA ネーム・サービスのサーバ・プロセスは、-M コマンド行オプションで指定した数に達したときにバインディング・イテレータを削除します。バインディング・イテレータが最大数に達してから新しいバインディング・イテレータを作成しようとすると、CORBA ネーム・サービスのサーバ・プロセスは、クライアント・アプリケーションで使用中のバインディング・イテレータを破棄します。
バインディング・イテレータは、使用履歴の最も古いアルゴリズムを基に削除されます。デフォルト値は 20 です。値を 0 にすると、バインディング・イテレータの数の制約がないことを示します。つまり、CORBA ネーム・サービスのサーバ・プロセスはバインディング・イテレータを破棄せず、関連付けられているメモリは解放されません。0 を指定した場合、クライアント・アプリケーションは、CosNaming::BindingIterator::destroy() メソッドを使用して、未使用のバインディング・イテレータを明示的に削除する必要があります。
-p [persistentstoragefilename]
CORBA ネーム・サービスのサーバ・プロセスで、指定したファイルを使用して現在の名前空間のコピーが永続ストレージに保存されるようにします。ファイル名を指定しなかった場合、CNS_PERSIST_FILE 環境変数の値が使用されます。CNS_PERSIST_FILE 環境変数を設定しなかった場合、以下のファイルが使用されます。
Windows
%APPDIR%\cnspersist.dat
UNIX
$APPDIR/cnspersist.dat
永続ストレージ・ファイルは、CORBA ネーム・サービスのサーバ・プロセスが開始されたときに読み取られます。永続ストレージ・ファイルは、名前空間に変更が加えられるたびに追加されます。新しい名前空間を作成する場合、既存の永続ストレージ・ファイルを削除するか、CORBA ネーム・サービスのサーバ・プロセスに対して新しい永続ストレージ・ファイルを作成する必要があります。
cnsbind
概要
アプリケーション・オブジェクトおよびネーミング・コンテキストを名前空間にバインドします。
注記 cnsbind コマンドは、CosNaming インターフェイスとやり取りします。このコマンドを使用して CORBA ネーム・サービスのサーバ・プロセスを実行する必要があります。
構文
cnsbind
[-C]
[-froot_context_filename]
[-h]
[-N]
[-oior_filename]
[-r]
[-TTObjAddr]
bind_name
説明
cnsbind コマンドは、CORBA CosNaming インターフェイスを使用して新しいアプリケーション・オブジェクトとネーミング・コンテキスト・オブジェクトを名前空間にバインドします。このコマンドを使用すると、連合型名前空間を簡単に作成できるようになります。cnsbind コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsbind コマンドのコマンド行オプションは以下のとおりです。
-C
cnsbind コマンドが、bind_name (名前)、および -o コマンド行オプションで指定した ior_filename を使用してコンテキストを作成するように指定します。-C コマンド行オプションを使用して、ある名前空間のネーミング・コンテキスト・オブジェクトを、指定した名前空間に連合させます。
-f root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references() メソッドを使用し、指定した BEA Tuxedo ドメインに対する CORBA ネーム・サービスのサーバ・プロセスをロケートします。IOR のホストとポートは、TOBJADDR の値と一致していなければなりません。コマンド行オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR 環境変数が使用されます。
-h
コマンドの構文を出力します。
-N
新しいコンテキストを作成し、指定した名前を使用する名前空間にそれをバインドします。cnsbind コマンドが新しいコンテキストを作成するので、-N コマンド行オプションとともに -o コマンド行オプションを使用する必要はありません。-N コマンド行オプションとともに -o コマンド行オプションを使用しても、-o コマンド行オプションの情報は無視されます。
-o ior_filename
-f コマンド行オプションで指定した名前空間にバインドするオブジェクトの IOR を格納するファイルを指定します。-C コマンド行オプションを指定した場合は ncontext 型のオブジェクトが作成され、指定しなかった場合は nobject 型のオブジェクトが作成されます。
-r
名前に既にバインディングがある場合でも、アプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトのバインディングを作成します。-r コマンド行オプションを指定しない cnsbind コマンドのデフォルトの動作では、指定したオブジェクトのバインディングが既に存在する場合に AlreadyBound 例外が発生します。cnsbind コマンドが呼び出されたときに AlreadyBound その他の例外が返された場合、コマンドは終了し、「Error, already bound」というメッセージが表示されます。
T TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsbind コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR 環境変数の値が使用されます。TObjAddr 指定の有効な形式は、//hostname:port_number です。
bind_name
Tobj_Bootstrap::resolve_initial_references メソッドから取り出したルート・ネーミング・コンテキスト、または -f コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキスト・オブジェクトを基に名前空間に追加されたアプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトにバインドする名前を指定します。bind_name 文字列は、Object Management Group (OMG) インターオペラブル・ネーム・サービス (INS) 仕様で指定した名前の文字列の形式に従っている必要があります。
例
次の例は、アプリケーション・オブジェクトのバインディングを示しています。
cnsbind -o ./app_obj_ior.txt MyContext/AppObject1
次の例は、ネーミング・コンテキスト・オブジェクトのバインディングを示しています。
cnsbind -N MyContext/CtxObject1
次の例は、フェデレーション・ポイントのほかの名前空間へのバインディングを示しています。
cnsbind -C -o ./remote_ior.txt MyContext/RemoteNSCtx1
cnsls
概要
名前空間の内容を表示します。
注記 cnsls コマンドは、CosNaming インターフェイスとやり取りします。このコマンドを使用して CORBA ネーム・サービスのサーバ・プロセスを実行する必要があります。
構文
cnsls
[-froot_context_filename]
[-h]
[-s]
[-R]
[-TTobjAddr]
[resolve_name]
説明
cnsls コマンドは、CORBA CosNaming インターフェイスを使用して名前空間の内容を表示します。非出力文字を NameComponent データ構造の一部として使用する場合、cnsls コマンドの動作は未定義です。cnsls コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsls コマンドのコマンド行オプションは以下のとおりです。
-f root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references() メソッドを使用し、指定した BEA Tuxedo ドメインに対する CORBA ネーム・サービスのサーバ・プロセスをロケートします。IOR のホストとポートは、TOBjAddr の値と一致していなければなりません。コマンド行オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR 環境変数の値が使用されます。
-h
コマンドの構文を出力します。
-S
resolve_name コマンド行オプションで指定した名前空間の名前の文字列化された IOR を表示します。
-R
resolve_name で始まる名前空間のバインディングを再帰的に表示します。このコマンド行オプションによって、cnsls コマンドは、フェデレーションの境界が交差している場合にも何も示されずに境界を越える可能性があります。また、名前空間の情報に循環が存在する場合、このコマンド行オプションによって cnsls コマンドがループに入る可能性もあります。
-T TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsls コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR 環境変数が使用されます。
resolve_name
Tobj_Bootstrap::resolve_initial_references メソッドを介して取り出したルート・ネーミング・コンテキスト、または -f コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキスト・オブジェクトを基にしたネーム・サービスで解決する名前を指定します。resolve_name 文字列は、OMG INS 仕様で指定した名前の文字列の形式に従っている必要があります。名前コンポーネントの区切りにはバックスラッシュ (\)、id フィールドと kind フィールドの区切りにはピリオド (.) を使用します。
このコマンド行オプションを指定しなかった場合、ルート・コンテキストが解決されます。
例
cnsls -R MyContext.kind/AnotherContext
[context] MyContext.kind/AnotherContext
[object] Obj1
[object] Obj2
[context] Ctx1
[object] AnotherObject
cnsunbind
概要
名前空間のバインディングを解除します。
構文
cnsunbind
[-D]
[-froot_context_filename]
[-h]
[-TTObjAddr]
bind_name
説明
cnsunbind コマンドは、名前空間のバインディングを解除します。cnsunbind コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsunbind コマンド行オプションは、以下のとおりです。
-D
バインディングを解除した後に bind_name にバインドされているネーミング・コンテキストを破棄します。コンテキストを破棄するときに -D コマンド行オプションを指定しても、コンテキストがほかのバインディングの一部になっている場合は孤立化されません。同時に複数のネーミング・コンテキスト・オブジェクトにバインドされた場合などにバインディングが保留される可能性があるので、このコマンド行オプションの使用には注意する必要があります。
-f root_context_filename
名前空間の内容を変更するためにコマンドがやり取りする、CORBA ネーム・サービスのサーバ・プロセスの IOR を格納するファイルを指定します。このコマンド行オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references() メソッドを使用し、指定した BEA Tuxedo ドメインに対するサーバ・プロセスをロケートします。
-h
コマンドの構文を出力します。
-T TObjAddr
BEA Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム・サービスのサーバ・プロセスに接続する前に、cnsbind コマンドは、サーバ・プロセスが実行される BEA Tuxedo ドメインにログインする必要があります。コマンド行オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンド行オプションを指定しなかった場合、TOBJADDR 環境変数が使用されます。
bind_name
Tobj_Bootstrap::resolve_initial_references() メソッドから取り出したルート・ネーミング・コンテキスト、または -f コマンド行オプションから取得した文字列の IOR に示されているネーミング・コンテキストを基にした名前空間から解除するバインディングの名前を指定します。bind_name 文字列は、OMG INS 仕様で指定した名前の文字列の形式に従っている必要があります。
例
次の例は、名前空間からのバインディングの解除を示しています。
cnsunbind MyContext/CtxObject1
次の例は、名前空間からのバインディングの解除、およびバインドされているオブジェクトの破棄を示しています。
cnsunbind -D MyContext/CtxObject1
CORBA ネーム・サービスの機能と制限事項
CORBA ネーム・サービスには、以下の機能と制限があります。
NULL 文字は、id 文字列と kind 文字列の終端としてのみ使用します (空の文字列は有効と見なされます)。CannotProceed 例外をスローしません。
NameService 環境オブジェクトへの初期リファレンスの取得
NameService 環境オブジェクトは、名前空間のルートへの接続に使用できます。NameService 環境オブジェクトを使用する場合、オブジェクト・リクエスト・ブローカ (ORB) が名前空間のルートをロケートします。Bootstrap オブジェクトまたは CORBA インターオペラブル・ネーミング・サービス (INS) のブートストラップ処理メカニズムを使用すると、NameService 環境オブジェクトへの初期リファレンスを取得できます。BEA クライアント ORB を使用する場合は、BEA 社固有のメカニズムを使用します。別のベンダのクライアント ORB を使用する場合は、CORBA INS メカニズムを使用します。
名前空間への接続の詳細については、第 4 章の「ステップ 3: BEA Tuxedo 名前空間への接続」を参照してください。BEA Tuxedo ドメインのブートストラップ処理の詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA プログラミング・リファレンス』の「第 4 章 CORBA ブートストラップ処理のプログラミング・リファレンス」を参照してください。
CORBA ネーム・サービスで使用する CosNaming データ構造体
CORBA ネーム・サービスは、以下の CosNaming データ構造体を使用します。
CosNaming::BindingListCosNaming::BindingTypeCosNaming::IstringCosNaming::NameCosNaming::NameComponent
NamingContext オブジェクト
NamingContext オブジェクトは、オブジェクト・リクエスト・ブローカ (ORB) オブジェクトまたはほかの NamingContext オブジェクトにバインドされている名前のリストを格納および操作するのに使用します。BEA Tuxedo CORBA クライアント・アプリケーションは、このインターフェイスを使用して、コンテキスト内のすべての名前を解決またはリストします。BEA Tuxedo CORBA サーバ・アプリケーションは、このオブジェクトを使用して、アプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトに名前をバインドします。リスト 2-1 は、NamingContext オブジェクトの OMG IDL を示しています。
リスト 2-1 NamingContext オブジェクトの OMG IDL
module CosNaming {
interface NamingContext {
void bind(in Name, in Object obj)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void rebind(in Name, in Object obj)
raises(NotFound, CannotProceed, InvalidName);
void bind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void rebind_context(in Name n, in NamingContext nc)
raises(NotFound, CannotProceed, InvalidName);
Object resolve(in Name n)
raises(NotFound, CannotProceed, InvalidName);
void unbind(in Name n)
raises(NotFound, CannotProceed, InvalidName);
NamingContext new_context
NamingContext bind_new_context(in Name n)
raises(NotFound, CannotProceed, InvalidName, AlreadyBound);
void destroy()
raises(NotEmpty);
void list(in unsigned long how_many,
out BindingList bl,
out BindingIterator bi);
}
}
CosNaming::NamingContext::bind()
概要
最初の NameComponent データ構造体に関連付けられているコンテキストを解決し、オブジェクトを新しいコンテキストにバインドすることで、指定したオブジェクトを指定した名前にバインドしようとします。
C++
マッピング
void bind(in Namen, in Objectobj);
Java
マッピング
void bind (NameComponent []n, Objectobj);
パラメータ
n
目的のオブジェクト名で初期化される Name データ構造体。
obj
指定した名前にバインドするオブジェクト。
例外
AlreadyBound
bind() メソッドまたは bind_context() メソッドの Name が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
bind にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_context()
概要
このメソッドは、bind() メソッドとほぼ同じですが、指定した Name が NamingContext オブジェクトに関連付けられています。
C++
マッピング
void bind_context(in Namen, in NamingContextnc);
Java
マッピング
void bind_context (NameComponent []n, NamingContextnc);
パラメータ
n
目的のネーミング・コンテキスト名で初期化される Name データ構造体。シーケンス内の最初の NameComponent データ構造体がネーミング・コンテキストに対して解決される必要があります。
nc
指定した名前にバインドする NamingContext オブジェクト。
例外
AlreadyBound
bind() メソッドまたは bind_context() メソッドの Name が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
BAD_PARAM
NULL コンテキストをバインドするための呼び出しが試行されたことを示します。
説明
bind_context() にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_new_context()
概要
新しいコンテキストを作成し、コンテキスト内で指定した Name にバインドします。
C++
マッピング
NamingContext bind_new_context(in Name n);
Java
マッピング
bind_new_context (NameComponent []n);
パラメータ
n
新しく作成された NamingContext オブジェクト名で初期化される Name データ構造体。
例外
AlreadyBound
bind() メソッドまたは bind_context() メソッドの Name が、ネーミング・コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。
InvalidName
指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
このメソッドは、CosNaming::NamingContext::new_context() メソッドと CosNaming::NamingContext::bind_context() メソッドを 1 つにまとめたものです。
戻り値
新しい NamingContext オブジェクトに対するリファレンスを返します。
CosNaming::NamingContext::destroy()
概要
NamingContext オブジェクトを削除します。削除した後で NamingContext オブジェクトに対する呼び出しを実行すると、CORBA::NO_IMPLEMENT 例外が発生します。
C++
マッピング
void destroy();
Java
マッピング
void destroy();
パラメータ
特にありません。
例外
NotEmpty
NamingContext オブジェクトにバインディングがある場合、このメソッドで NotEmpty が発生します。
説明
このメソッドを使用する前に、 NamingContext オブジェクトにバインドされているすべてのネーム・オブジェクトに対して、CosNaming::NamingContext::unbind() メソッドでアンバウンドする必要があります。
戻り値
特にありません。
CosNaming::NamingContext::list()
概要
このネーミング・コンテキストによって格納されているすべてのバインディングを返します。
C++
マッピング
void list(in unsigned_longhow_many,
out BindingListbl,
out BindingIteratorbi);
Java
マッピング
void list(inthow_many,
BindingListHolderbl,
BindingIteratorHolderbi);
パラメータ
how_many
リストに返されるバインディングの最大数。
bl
返されたバインディングのリスト。各要素は、NameComponent オブジェクトを表す Name を含むバインディングです。それぞれの Name は単純な名前です。つまり、長さ 1 の名前のシーケンスです。リスト内のバインディングの数は、how_many の値を超えません。
bi
残りのバインディングをたどるための BindingIterator オブジェクトに対するリファレンス。
例外
InvalidName
指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。
説明
このメソッドは、名前のバインディングのシーケンスを返します。bl リストに当てはまるよりも多くの名前のバインディングが存在する場合、BindingIterator オブジェクトが返されます。BindingIterator オブジェクトを使用して、バインディングの次のセットを取得できます。BindingList オブジェクト (C++) または BindingListHolder オブジェクト (Java) は、要求された番号よりも少ないバインディングしかない場合、リストの最後にあるバインディングの番号を返します。bi が NULL リファレンスを返した場合、bl にはすべてのバインディングが含まれています。
戻り値
特にありません。
CosNaming::NamingContext::new_context()
概要
新しいネーミング・コンテキストを作成します。新しく作成されたコンテキストは、最初はどの Name にもバインドされていません。
C++
マッピング
NamingContext new_context();
Java
マッピング
NamingContext new_context();
パラメータ
特にありません。
例外
特にありません。
説明
CosNaming::NamingContext::bind_context() メソッドを使用して、新しいネーミング・コンテキストを Name にバインドします。
戻り値
新しいネーミング・コンテキストに対するリファレンスを返します。
CosNaming::NamingContext::rebind()
概要
このメソッドは、bind() メソッドとほぼ同じです。違いは、rebind メソッドでは AlreadyBound 例外が発生しないという点です。指定した Name が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。
C++
マッピング
void rebind(in Name
n, in Objectobj);
Java
マッピング
void rebind(NameComponent []n, Objectobj);
パラメータ
n
目的のオブジェクト名で初期化される Name データ構造体。
obj
命名対象のオブジェクト。
例外
InvalidName
指定した Name データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。バインディングが既に存在しているか、またはバインディングが不正なタイプのものであるために例外が発生した場合、例外の rest_of_name メンバーには長さ 1 があります。
説明
rebind() メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::rebind_context()
概要
このメソッドは、bind_context() メソッドとほぼ同じです。違いは、rebind_context メソッドでは AlreadyBound 例外が発生しないという点です。指定した Name が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。
C++
マッピング
void rebind_context(in Name
n, in NamingContextnc);
Java
マッピング
void rebind_context(NameComponent []n, NamingContextnc);
パラメータ
n
目的のオブジェクト名で初期化される Name データ構造体。
nc
再バインド対象の NamingContext オブジェクト。
例外
InvalidName
指定した Name データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。バインディングが既に存在しているか、またはバインディングが不正なタイプのものであるために例外が発生した場合、例外の rest_of_name メンバーには長さ 1 があります。
説明
rebind_context メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::resolve()
概要
指定した Name を解決しようとします。
C++
マッピング
Object resolve(in Name
n);
Java
マッピング
Object resolve (NameComponentn);
パラメータ
n
目的のオブジェクト名で初期化される Name データ構造体。
例外
InvalidName
指定した Name データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
指定した Name は、オブジェクトのバインドに使用する名前と同じものでなければなりません。CORBA ネーム・サービスは、オブジェクトのタイプを返しません。クライアント・アプリケーションでは、オブジェクトを適切なタイプにナロー変換します。
戻り値
指定した Name のオブジェクト・リファレンスを返します。
CosNaming::NamingContext::unbind()
概要
指定した Name に関連付けられたバインディングを削除し、bind() メソッドとは逆のオペレーションを実行します。
C++
マッピング
void unbind(in Namen);
Java
マッピング
void unbind (NameComponent []n);
パラメータ
n
目的のオブジェクト名で初期化される Name データ構造体。
例外
InvalidName
指定した Name データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング・コンテキストに対して解決されなかったことを示します。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
このメソッドは、名前とオブジェクトの間のバインディングを削除します。オブジェクトは削除されません。オブジェクトを削除するには、CosNaming::NamingContext::unbind() メソッドを使用してから、CosNaming::NamingContext::destroy() メソッドを使用します。
戻り値
特にありません。
NamingContextExt オブジェクト
NamingContextExt オブジェクトは、CORBA ネーム・サービスで URL と文字列化された名前を使用する方法を提供します。NamingContextExt オブジェクトは、NamingContext オブジェクトから派生したものです。CORBA ネーム・サービスのルートは、NamingContextExt オブジェクトです (つまり、ルートは NamingContext オブジェクトでもあります)。NamingContextExt オブジェクトのリファレンスを取得するのに特別なオペレーションは必要ありません。リスト 2-2 は、NamingContextExt オブジェクトの OMG IDL を示しています。
リスト 2-2 NamingContextExt オブジェクトの OMG IDL
module CosNaming {
interface NamingContextExt : NamingContext {
typedef string StringName;
typedef string Address;
typedef string URLString;
StringName to_string(in Name n)
raises(InvalidName);
Name to_name(in StringName sn)
raises(InvalidName);
exception InvalidAddress {};
URLString to_url(in Address addr, in StringName sn)
raises(InvalidAddress, InvalidName);
Object resolve_str(in StringName n)
raises(NotFound,
CannotProceed,
InvalidName,
AlreadyBound);
}
}
CosNaming::NamingContextExt::resolve_str()
概要
文字列化された名前を取り、それを Name に変換し、解決します。
構文
object resolve_str(in StringNamen);
パラメータ
n
解決対象の文字列化された名前。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
NotFound
名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。
説明
これは、CosNaming:NamingContext::resolve() メソッドと同じ方法で解決を実行する便利なメソッドです。
メソッドは、文字列化された名前を Name オブジェクトではなく引数として受け付けます。文字列化された名前が不正な場合、または文字列化された名前をバインドできなかった場合、メソッドはエラーを返します。
戻り値
バインドされた名前に対するリファレンス。
CosNaming::NamingContextExt::to_name()
概要
文字列化された名前を取り、Name オブジェクトを返します。
構文
Name to_name(in StringNamesn);
パラメータ
sn
Name オブジェクトに対して解決する文字列化された名前。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
説明
このメソッドは、文字列化された名前を受け付け、Name オブジェクトを返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
Name オブジェクトを返します。
CosNaming::NamingContextExt::to_string()
概要
Name オブジェクトを受け付け、文字列化された名前を返します。
構文
StringName to_string(in Name
n);
パラメータ
n
文字列化された名前に変換する Name オブジェクト。
例外
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
説明
このメソッドは、Name オブジェクトを受け付け、文字列化された名前を返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
文字列化された名前を返します。
CosNaming::NamingContextExt::to_URL()
概要
URL と文字列化された名前を組み合わせ、URL 文字列を返します。
構文
CosNaming::NamingContextExt::to_URL()
URLString to_URL(in Address
addr, in StringNamesn);
パラメータ
addr
URL。このパラメータが定義されていない場合、IIOP プロトコルでローカル・ホスト名が使用されます。
sn
URL と組み合わせる文字列化された名前。
例外
InvalidAddress
URL が無効であることを示します。
InvalidName
名前が無効であることを示します。長さ 0 の名前は無効です。
戻り値
URL と文字列化された名前を組み合わせた URL 文字列を返します。
BindingIterator オブジェクト
BindingIterator オブジェクトを使用すると、クライアント・アプリケーションは、NamingContext オブジェクトの list メソッドで返されたバインディングのアンバウンディッド・コレクションをたどることができます。BindingIterator オブジェクトを使用すると、クライアント・アプリケーションは、各呼び出しで取得したバインディング数を制御できます。BindingIterator オブジェクトのメソッドの呼び出しの間にネーミング・コンテキストが変更された場合、以降の next_one() メソッドまたは next_n() メソッドの呼び出しの動作は、インプリメンテーションによって異なります。
BindingIterator オブジェクトを作成しても、destroy メソッドを呼び出さない場合、クライアント・アプリケーションはリソース不足になる場合があります。CORBA ネーム・サービスでは、クライアント・アプリケーションに通知せずに、いつでもバインディング・イテレータを破棄できます。BindingIterator オブジェクトに対する呼び出しで OBJECT_NOT_EXIST 例外を予期し、この例外を適切に処理するようにクライアント・アプリケーションを記述する必要があります。
リスト 2-3 は、BindingIterator オブジェクトの OMG IDL を示しています。
リスト 2-3 BindingIterator オブジェクトの OMG IDL
module CosNaming {
interface BindingIterator {
boolean next_one(out Binding b);
boolean next_n(in unsigned long how_many,
out BindingList b);
void destroy();
};
}
CosNaming::BindingIterator::destroy()
概要
BindingIterator オブジェクトを破棄し、オブジェクトに関連付けられているメモリを解放します。このメソッドの呼び出しに失敗すると、メモリの使用量が増加します。
C++
マッピング
void destroy();
Java
マッピング
void destroy();
パラメータ
特にありません。
例外
特にありません。
説明
destroy メソッドを呼び出した後に、クライアント・アプリケーションが BindingIterator オブジェクトに対するオペレーションを呼び出すと、OBJECT_NOT_EXIST 例外が発生します。
戻り値
特にありません。
CosNaming::BindingIterator::next_n()
概要
リストから要求したバインディングの番号を格納する BindingList データ構造体を返します。返されたバインディングの番号は、要求された数がリストを超えている場合は、それよりも小さくなります。
C++
マッピング
boolean next_n(in unsigned_long
how_many, out BindingListbl);
Java
マッピング
boolean next_n(int
how_many, BindingListHolderbl);
パラメータ
how_many
返すバインディングの最大数。
bl
要求した数を超えないバインディングを格納する BindingList データ構造体。
例外
BAD_PARAM
how_many パラメータに 0 の値がある場合に発生します。
戻り値
リストの上限に達している場合に、CORBA::FALSE が返されます。それ以外の場合、CORBA::TRUE が返されます。
CosNaming::BindingIterator::next_one()
概要
リスト内の次の Binding オブジェクトを返します。
C++
マッピング
boolean next_one(out Binding
b);
Java
マッピング
boolean next_one(BindingHolder
b);
パラメータ
b
リスト内の次の Binding オブジェクト。
例外
特にありません。
戻り値
リストの上限に達している場合に、CORBA::FALSE が返されます。それ以外の場合、CORBA::TRUE が返されます。
CORBA ネーム・サービスで発生する例外
ここでは、CORBA ネーム・サービスで発生する例外について説明します。
AlreadyBound
構文
exception AlreadyBound{};
パラメータ
特にありません。
説明
この例外は、指定した名前にオブジェクトがバインドされている場合に発生します。1 つのコンテキストで名前にバインドできるオブジェクトは 1 つだけです。
CannotProceed
構文
exception CannotProceed{};
パラメータ
NamingContext cxt
オペレーションが再試行可能なコンテキスト。
Name rest_of_name
機能していないほかの名前。
説明
この例外は、予期しない例外のためにメソッドが適切に処理できなくなったときに発生します。
InvalidAddress
構文
exception InvalidAddress{};
パラメータ
特にありません。
説明
この例外は、URL が無効の場合に発生します。
InvalidName
構文
exception InvalidName{};
パラメータ
特にありません。
説明
この例外は、Name が無効の場合に発生します。長さ 0 の名前は無効です。
NotEmpty
構文
exception NotEmpty{};
パラメータ
特にありません。
説明
この例外は、バインディングを含む NamingContext オブジェクトに対して destroy() メソッドが使用されたときに発生します。NamingContext オブジェクトは、破棄する前に空になっている必要があります。
NotFound
構文
exception NotFound{NotFoundReason why; Name rest_of_name;};
パラメータ
why
オペレーションが再試行可能なコンテキスト。
rest_of_name
機能していないほかの名前。
説明
この例外は、名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だった場合に発生します。why パラメータは、エラーの理由を示します。rest_of_name パラメータは、エラーの原因を示します。以下の原因が表示されます。
missing_node − rest_of_name パラメータの最初の名前コンポーネントが、親コンテキスト内のその名前の下でバインドされていないバインドであることを示します。not_context− rest_of_name パラメータの最初の名前コンポーネントが、ncontext のタイプが要求されているときに nobject のタイプのバインディングであることを示します。not_object− rest_of_name パラメータの最初の名前コンポーネントが、nobject のタイプが要求されているときに ncontext のタイプのバインディングであることを示します。
|
|
|
|
|
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|