bea ホーム | 製品 | dev2dev | support | askBEA |
![]() |
![]() |
|
![]() |
e-docs > Tuxedo > Tuxedo CORBA ネーム・サービス > CORBA ネーム・サービス・リファレンス |
Tuxedo CORBA ネーム・サービス
|
CORBA ネーム・サービス・リファレンス
ここでは、以下の内容について説明します。
CORBA ネーム・サービスのコマンド
CORBA ネーム・サービスは、CORBA ネーム・サービスのサーバ・プロセスを管理し、名前空間内の名前にオブジェクトをバインドまたはアンバインドし、名前空間の内容を表示するために以下のコマンドを提供します。
以下の節では、これらのコマンドについて説明します。
cns
概要
CORBA ネーム・サービスのサーバ・プロセスを制御します。
構文
cns CLOPT="[-A] [servopts options] --
[-b bucketcount]
[-c]
[-d]
[-f filename]
[-M maxiterators]
[-p [persiststoragefilename] ]"
説明
CORBA ネーム・サービスのサーバ・プロセスは、CORBA CosNaming 準拠のネーム・サービスを提供します。使用する BEA Tuxedo アプリケーションに対して、その BEA Tuxedo アプリケーションで使用するほかのサーバ・プロセスと同様に、CORBA ネーム・サービスのサーバ・プロセスとそのオプションを UBBCONFIG ファイルで定義する必要があります。UBBCONFIG ファイルの CLOPT パラメータで、ダブル・ハイフン (--) の後に、cns コマンド行オプションを入力します。コマンド行オプションには、以下のものがあります。
cnsbind
概要
アプリケーション・オブジェクトおよびネーミング・コンテキストを名前空間にバインドします。
注記 cnsbind コマンドは、CosNaming インターフェイスとやり取りします。このコマンドを使用して CORBA ネーム・サービスのサーバ・プロセスを実行する必要があります。
構文
cnsbind
[-C]
[-f root_context_filename]
[-h]
[-N]
[-o ior_filename]
[-r]
[-T TObjAddr]
bind_name
説明
cnsbind コマンドは、CORBA CosNaming インターフェイスを使用して新しいアプリケーション・オブジェクトとネーミング・コンテキスト・オブジェクトを名前空間にバインドします。このコマンドを使用すると、連合型名前空間を簡単に作成できるようになります。cnsbind コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsbind コマンドのコマンド行オプションは以下のとおりです。
例
次の例は、アプリケーション・オブジェクトのバインディングを示しています。
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
[-f root_context_filename]
[-h]
[-s]
[-R]
[-T TobjAddr]
[resolve_name]
説明
cnsls コマンドは、CORBA CosNaming インターフェイスを使用して名前空間の内容を表示します。非出力文字を NameComponent データ構造の一部として使用する場合、cnsls コマンドの動作は未定義です。cnsls コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsls コマンドのコマンド行オプションは以下のとおりです。
例
cnsls -R MyContext.kind/AnotherContext
[context] MyContext.kind/AnotherContext
[object] Obj1
[object] Obj2
[context] Ctx1
[object] AnotherObject
cnsunbind
概要
名前空間のバインディングを解除します。
構文
cnsunbind
[-D]
[-f root_context_filename]
[-h]
[-T TObjAddr]
bind_name
説明
cnsunbind コマンドは、名前空間のバインディングを解除します。cnsunbind コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。
cnsunbind コマンド行オプションは、以下のとおりです。
例
次の例は、名前空間からのバインディングの解除を示しています。
cnsunbind MyContext/CtxObject1
次の例は、名前空間からのバインディングの解除、およびバインドされているオブジェクトの破棄を示しています。
cnsunbind -D MyContext/CtxObject1
CORBA ネーム・サービスの機能と制限事項
CORBA ネーム・サービスには、以下の機能と制限があります。
NameService 環境オブジェクトへの初期リファレンスの取得
NameService 環境オブジェクトは、名前空間のルートへの接続に使用できます。NameService 環境オブジェクトを使用する場合、オブジェクト・リクエスト・ブローカ (ORB) が名前空間のルートをロケートします。Bootstrap オブジェクトまたは CORBA インターオペラブル・ネーミング・サービス (INS) のブートストラップ処理メカニズムを使用すると、NameService 環境オブジェクトへの初期リファレンスを取得できます。BEA クライアント ORB を使用する場合は、BEA 社固有のメカニズムを使用します。別のベンダのクライアント ORB を使用する場合は、CORBA INS メカニズムを使用します。
名前空間への接続の詳細については、ステップ 3: BEA Tuxedo 名前空間に接続するを参照してください。BEA Tuxedo ドメインのブートストラップ処理の詳細については、BEA Tuxedo オンライン・マニュアルの『BEA Tuxedo CORBA プログラミング・リファレンス』の「第 4 章 CORBA ブートストラップ処理のプログラミング・リファレンス」を参照してください。
CORBA ネーム・サービスで使用する CosNaming データ構造体
CORBA ネーム・サービスは、以下の CosNaming データ構造体を使用します。
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 Name n, in Object obj);
Java マッピング
void bind (NameComponent [] n, Object obj);
パラメータ
例外
説明
bind にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_context()
概要
このメソッドは、bind() メソッドとほぼ同じですが、指定した Name が NamingContext オブジェクトに関連付けられています。
C++ マッピング
void bind_context(in Name n, in NamingContext nc);
Java マッピング
void bind_context (NameComponent [] n, NamingContext nc);
パラメータ
例外
説明
bind_context() にバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::bind_new_context()
概要
新しいコンテキストを作成し、コンテキスト内で指定した Name にバインドします。
C++ マッピング
NamingContext bind_new_context(in Name n);
Java マッピング
bind_new_context (NameComponent [] n);
パラメータ
例外
説明
このメソッドは、CosNaming::NamingContext::new_context() メソッドと CosNaming::NamingContext::bind_context() メソッドを 1 つにまとめたものです。
戻り値
新しい NamingContext オブジェクトに対するリファレンスを返します。
CosNaming::NamingContext::destroy()
概要
NamingContext オブジェクトを削除します。削除した後で NamingContext オブジェクトに対する呼び出しを実行すると、CORBA::NO_IMPLEMENT 例外が発生します。
C++ マッピング
void destroy();
Java マッピング
void destroy();
パラメータ
例外
説明
このメソッドを使用する前に、 NamingContext オブジェクトにバインドされているすべてのネーム・オブジェクトに対して、CosNaming::NamingContext::unbind() メソッドでアンバウンドする必要があります。
戻り値
特にありません。
CosNaming::NamingContext::list()
概要
このネーミング・コンテキストによって格納されているすべてのバインディングを返します。
C++ マッピング
void list(in unsigned_long how_many,
out BindingList bl,
out BindingIterator bi);
Java マッピング
void list(int how_many,
BindingListHolder bl,
BindingIteratorHolder bi);
パラメータ
例外
説明
このメソッドは、名前のバインディングのシーケンスを返します。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 Object obj);
Java マッピング
void rebind(NameComponent [] n, Object obj);
パラメータ
例外
説明
rebind() メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::rebind_context()
概要
このメソッドは、bind_context() メソッドとほぼ同じです。違いは、rebind_context メソッドでは AlreadyBound 例外が発生しないという点です。指定した Name が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。
C++ マッピング
void rebind_context(in Name n, in NamingContext nc);
Java マッピング
void rebind_context(NameComponent [] n, NamingContext nc);
パラメータ
例外
説明
rebind_context メソッドにバインドされたネーミング・コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。
戻り値
特にありません。
CosNaming::NamingContext::resolve()
概要
指定した Name を解決しようとします。
C++ マッピング
Object resolve(in Name n);
Java マッピング
Object resolve (NameComponent n);
パラメータ
例外
説明
指定した Name は、オブジェクトのバインドに使用する名前と同じものでなければなりません。CORBA ネーム・サービスは、オブジェクトのタイプを返しません。クライアント・アプリケーションでは、オブジェクトを適切なタイプにナロー変換します。
戻り値
指定した Name のオブジェクト・リファレンスを返します。
CosNaming::NamingContext::unbind()
概要
指定した Name に関連付けられたバインディングを削除し、bind() メソッドとは逆のオペレーションを実行します。
C++ マッピング
void unbind(in Name n);
Java マッピング
void unbind (NameComponent [] n);
パラメータ
例外
説明
このメソッドは、名前とオブジェクトの間のバインディングを削除します。オブジェクトは削除されません。オブジェクトを削除するには、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 StringName n);
パラメータ
例外
説明
これは、CosNaming:NamingContext::resolve() メソッドと同じ方法で解決を実行する便利なメソッドです。
メソッドは、文字列化された名前を Name オブジェクトではなく引数として受け付けます。文字列化された名前が不正な場合、または文字列化された名前をバインドできなかった場合、メソッドはエラーを返します。
戻り値
バインドされた名前に対するリファレンス。
CosNaming::NamingContextExt::to_name()
概要
文字列化された名前を取り、Name オブジェクトを返します。
構文
Name to_name(in StringName sn);
パラメータ
例外
説明
このメソッドは、文字列化された名前を受け付け、Name オブジェクトを返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
Name オブジェクトを返します。
CosNaming::NamingContextExt::to_string()
概要
Name オブジェクトを受け付け、文字列化された名前を返します。
構文
StringName to_string(in Name n);
パラメータ
例外
説明
このメソッドは、Name オブジェクトを受け付け、文字列化された名前を返します。名前が不正な場合、メソッドはエラーを返します。
戻り値
文字列化された名前を返します。
CosNaming::NamingContextExt::to_URL()
概要
URL と文字列化された名前を組み合わせ、URL 文字列を返します。
構文
CosNaming::NamingContextExt::to_URL()
URLString to_URL(in Address addr, in StringName sn);
パラメータ
例外
URL が無効であることを示します。
名前が無効であることを示します。長さ 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 BindingList bl);
Java マッピング
boolean next_n(int how_many, BindingListHolder bl);
パラメータ
例外
戻り値
リストの上限に達している場合に、CORBA::FALSE が返されます。それ以外の場合、CORBA::TRUE が返されます。
CosNaming::BindingIterator::next_one()
概要
リスト内の次の Binding オブジェクトを返します。
C++ マッピング
boolean next_one(out Binding b);
Java マッピング
boolean next_one(BindingHolder b);
パラメータ
例外
特にありません。
戻り値
リストの上限に達している場合に、CORBA::FALSE が返されます。それ以外の場合、CORBA::TRUE が返されます。
CORBA ネーム・サービスで発生する例外
ここでは、CORBA ネーム・サービスで発生する例外について説明します。
AlreadyBound
構文
exception AlreadyBound{};
パラメータ
特にありません。
説明
この例外は、指定した名前にオブジェクトがバインドされている場合に発生します。1 つのコンテキストで名前にバインドできるオブジェクトは 1 つだけです。
CannotProceed
構文
exception CannotProceed{};
パラメータ
説明
この例外は、予期しない例外のためにメソッドが適切に処理できなくなったときに発生します。
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 パラメータは、エラーの原因を示します。以下の原因が表示されます。
![]() |
![]() |
![]() |
![]() |
||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |