Tuxedo CORBA ネーム サービス

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

CORBA ネーム サービス リファレンス

ここでは、以下の内容について説明します。

注意 : Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、サポートされなくなりました。すべての Oracle Tuxedo CORBA Java クライアントおよび Oracle Tuxedo CORBA Java クライアント ORB のテキスト リファレンスとコード サンプルは、サード パーティ製の Java ORB ライブラリをインプリメントまたは実行する際の参考や、プログラマの参照用としてのみ使用してください。
注意 : サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。

 


CORBA ネーム サービスのコマンド

CORBA ネーム サービスは、CORBA ネーム サービスのサーバ プロセスを管理し、ネームスペース内の名前にオブジェクトをバインドまたはアンバインドし、ネームスペースの内容を表示するために以下のコマンドを提供します。

以下の節では、これらのコマンドについて説明します。

cns

概要

CORBA ネーム サービスのサーバ プロセスを制御します。

構文

cns CLOPT="[-A] [servopts options] --
[-b
bucketcount]
[-c]
[-d]
[-f
filename]
[-M
maxiterators]
[-p [
persiststoragefilename] ]"

説明

CORBA ネーム サービスのサーバ プロセスは、CORBA CosNaming 準拠のネーム サービスを提供します。使用する Oracle Tuxedo アプリケーションに対して、その Oracle Tuxedo アプリケーションで使用するほかのサーバ プロセスと同様に、CORBA ネーム サービスのサーバ プロセスとそのオプションを UBBCONFIG ファイルで定義する必要があります。UBBCONFIG ファイルの CLOPT パラメータで、ダブル ハイフン (--) の後に、cns コマンドライン オプションを入力します。コマンドライン オプションには、以下のものがあります。

-b bucketcount

ネーミング コンテキストをメモリ内にロケートするために、サーバ プロセスが内部で使用するハッシュ テーブルのバケット数を指定します。各ネーミング コンテキストには、専用のハッシュ テーブルがあります。Oracle Tuxedo アプリケーションが各ネーミング コンテキストでより少ない数のバインディングを使用する場合、小さなバケット数 (4 または 5 など) を使用します。Oracle 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]
[-f
root_context_filename]
[-h]
[-N]
[-o
ior_filename]
[-r]
[-T
TObjAddr]
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() メソッドを使用し、指定した Oracle 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

Oracle Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム サービスのサーバ プロセスに接続する前に、cnsbind コマンドは、サーバ プロセスが実行される Oracle Tuxedo ドメインにログインする必要があります。コマンドライン オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンドライン オプションを指定しなかった場合、TOBJADDR 環境変数の値が使用されます。コマンドライン オプションを指定せず、かつ TOBJADDR を設定しなかった場合は、プログラムはネイティブ クライアントとして起動し TGIOP プロトコルをロードします。
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
[-f
root_context_filename]
[-h]
[-s]
[-R]
[-T
TobjAddr]
[
resolve_name]

説明

cnsls コマンドは、CORBA CosNaming インタフェースを使用してネームスペースの内容を表示します。非出力文字を NameComponent データ構造の一部として使用する場合、cnsls コマンドの動作は未定義です。cnsls コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。

cnsls コマンドのコマンドライン オプションは以下のとおりです。

-f root_context_filename

ネームスペースの内容を変更するためにコマンドがやり取りする、CORBA ネーム サービスのサーバ プロセスの IOR を格納するファイルを指定します。このコマンドライン オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references() メソッドを使用し、指定した Oracle Tuxedo ドメインに対する CORBA ネーム サービスのサーバ プロセスをロケートします。IOR のホストとポートは、TObjAddr の値と一致していなければなりません。コマンドライン オプションは、TOBJADDR 環境変数の設定をオーバーライドします。コマンドライン オプションを指定しなかった場合、TOBJADDR 環境変数の値が使用されます。

-h

コマンドの構文を出力します。

-s

resolve_name コマンドライン オプションで指定したネームスペースの名前の文字列化された IOR を表示します。

-R

resolve_name で始まるネームスペースのバインディングを再帰的に表示します。このコマンドライン オプションによって、cnsls コマンドは、フェデレーションの境界が交差している場合にも何も示されずに境界を越える可能性があります。また、ネームスペースの情報に循環が存在する場合、このコマンドライン オプションによって cnsls コマンドがループに入る可能性もあります。

-T TObjAddr

Oracle Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム サービスのサーバ プロセスに接続する前に、cnsls コマンドは、サーバ プロセスが実行される Oracle 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]
[-f
root_context_filename]
[-h]
[-T
TObjAddr]
bind_name

説明

cnsunbind コマンドは、ネームスペースのバインディングを解除します。cnsunbind コマンドが呼び出されたときに例外が返されると、このコマンドは終了し、対応するメッセージが表示されます。

cnsunbind コマンドライン オプションは、以下のとおりです。

-D

バインディングを解除した後に bind_name にバインドされているネーミング コンテキストを破棄します。コンテキストを破棄するときに -D コマンドライン オプションを指定しても、コンテキストがほかのバインディングの一部になっている場合は孤立化されません。同時に複数のネーミング コンテキスト オブジェクトにバインドされた場合などにバインディングが保留される可能性があるので、このコマンドライン オプションの使用には注意する必要があります。

-f root_context_filename

ネームスペースの内容を変更するためにコマンドがやり取りする、CORBA ネーム サービスのサーバ プロセスの IOR を格納するファイルを指定します。このコマンドライン オプションを指定しない場合、コマンドは、NameService 環境オブジェクトで Tobj_Bootstrap::resolve_initial_references() メソッドを使用し、指定した Oracle Tuxedo ドメインに対するサーバ プロセスをロケートします。

-h

コマンドの構文を出力します。

-T TObjAddr

Oracle Tuxedo ドメイン用のホストとポートを指定します。CORBA ネーム サービスのサーバ プロセスに接続する前に、cnsbind コマンドは、サーバ プロセスが実行される Oracle 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 ネーム サービスには、以下の機能と制限があります。

 


NameService 環境オブジェクトへの初期リファレンスの取得

NameService 環境オブジェクトは、ネームスペースのルートへの接続に使用できます。NameService 環境オブジェクトを使用する場合、オブジェクト リクエスト ブローカ (ORB) がネームスペースのルートをロケートします。Bootstrap オブジェクトまたは CORBA インターオペラブル ネーミング サービス (INS) のブートストラップ処理メカニズムを使用すると、NameService 環境オブジェクトへの初期リファレンスを取得できます。Oracle クライアント ORB を使用する場合は、Oracle 社固有のメカニズムを使用します。別のベンダのクライアント ORB を使用する場合は、CORBA INS メカニズムを使用します。

ネームスペースへの接続の詳細については、「ステップ 3: Oracle Tuxedo ネームスペースに接続する」を参照してください。Oracle Tuxedo ドメインのブートストラップ処理の詳細については、Oracle Tuxedo オンライン マニュアルの『Tuxedo CORBA プログラミング リファレンス』の「CORBA ブートストラップ処理のプログラミング リファレンス」を参照してください。

 


CORBA ネーム サービスで使用する CosNaming データ構造体

CORBA ネーム サービスは、以下の CosNaming データ構造体を使用します。

 


NamingContext オブジェクト

NamingContext オブジェクトは、オブジェクト リクエスト ブローカ (ORB) オブジェクトまたはほかの NamingContext オブジェクトにバインドされている名前のリストを格納および操作するのに使用します。Oracle Tuxedo CORBA クライアント アプリケーションは、このインタフェースを使用して、コンテキスト内のすべての名前を解決またはリストします。Oracle 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); 

パラメータ

n

目的のオブジェクト名で初期化される Name データ構造体。

obj

指定した名前にバインドするオブジェクト。

例外

AlreadyBound

bind() メソッドまたは bind_context() メソッドの Name が、ネーミング コンテキスト内のほかのオブジェクトに既にバインドされていることを示します。

InvalidName

指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング コンテキストに対して解決されなかったことを示します。

NotFound

Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。

説明

bind にバインドされたネーミング コンテキストは、複数の名前を解決のために渡すときに名前解決に参加しません。

戻り値

特にありません。

CosNaming::NamingContext::bind_context()

概要

このメソッドは、bind() メソッドとほぼ同じですが、指定した NameNamingContext オブジェクトに関連付けられています。

C++ マッピング

void bind_context(in Name n, in NamingContext nc); 

パラメータ

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); 

パラメータ

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(); 

パラメータ

特にありません。

例外

NotEmpty

NamingContext オブジェクトにバインディングがある場合、このメソッドで NotEmpty が発生します。

説明

このメソッドを使用する前に、NamingContext オブジェクトにバインドされているすべてのネーム オブジェクトに対して、CosNaming::NamingContext::unbind() メソッドでアンバウンドする必要があります。

戻り値

特にありません。

CosNaming::NamingContext::list()

概要

このネーミング コンテキストによって格納されているすべてのバインディングを返します。

C++ マッピング

void list(in unsigned_long how_many, 
out BindingList
bl,
out BindingIterator
bi);

パラメータ

how_many

リストに返されるバインディングの最大数。

bl

返されたバインディングのリスト。各要素は、NameComponent オブジェクトを表す Name を含むバインディングです。それぞれの Name は単純な名前です。つまり、長さ 1 の名前のシーケンスです。リスト内のバインディングの数は、how_many の値を超えません。

bi

残りのバインディングをたどるための BindingIterator オブジェクトに対するリファレンス。

例外

InvalidName

指定した Name に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング コンテキストに対して解決されなかったことを示します。

NotFound

Name またはそのコンポーネントのいずれか 1 つが見つからなかったことを示します。

説明

このメソッドは、名前のバインディングのシーケンスを返します。bl リストに当てはまるよりも多くの名前のバインディングが存在する場合、BindingIterator オブジェクトが返されます。BindingIterator オブジェクトを使用して、バインディングの次のセットを取得できます。BindingList (C++) オブジェクトは、要求された番号よりも少ないバインディングしかない場合、リストの最後にあるバインディングの番号を返します。biNULL リファレンスを返した場合、bl にはすべてのバインディングが含まれています。

戻り値

特にありません。

CosNaming::NamingContext::new_context()

概要

新しいネーミング コンテキストを作成します。新しく作成されたコンテキストは、最初はどの Name にもバインドされていません。

C++ マッピング

NamingContext new_context(); 

パラメータ

特にありません。

例外

特にありません。

説明

CosNaming::NamingContext::bind_context() メソッドを使用して、新しいネーミング コンテキストを Name にバインドします。

戻り値

新しいネーミング コンテキストに対するリファレンスを返します。

CosNaming::NamingContext::rebind()

概要

このメソッドは、bind() メソッドとほぼ同じです。違いは、rebind メソッドでは AlreadyBound 例外が発生しないという点です。指定した Name が既にほかのオブジェクトにバインドされている場合、そのバインディングは新しいバインディングに置き換えられます。

C++ マッピング

void rebind(in Name n, in Object obj);

パラメータ

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 NamingContext nc);

パラメータ

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); 

パラメータ

n

目的のオブジェクト名で初期化される Name データ構造体。

例外

InvalidName

指定した Name データ構造体に 0 名前コンポーネントがあるか、最初の名前コンポーネントのいずれか 1 つがネーミング コンテキストに対して解決されなかったことを示します。

NotFound

名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。

説明

指定した Name は、オブジェクトのバインドに使用する名前と同じものでなければなりません。CORBA ネーム サービスは、オブジェクトのタイプを返しません。クライアント アプリケーションでは、オブジェクトを適切なタイプにナロー変換します。

戻り値

指定した Name のオブジェクト参照を返します。

CosNaming::NamingContext::unbind()

概要

指定した Name に関連付けられたバインディングを削除し、bind() メソッドとは逆のオペレーションを実行します。

C++ マッピング

void unbind(in Name 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 StringName n);

パラメータ

n

解決対象の文字列化された名前。

例外

InvalidName

名前が無効であることを示します。長さ 0 の名前は無効です。

NotFound

名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だったことを示します。

説明

これは、CosNaming:NamingContext::resolve() メソッドと同じ方法で解決を実行する便利なメソッドです。メソッドは、文字列化された名前を Name オブジェクトではなく引数として受け付けます。文字列化された名前が不正な場合、または文字列化された名前をバインドできなかった場合、メソッドはエラーを返します。

戻り値

バインドされた名前に対するリファレンス。

CosNaming::NamingContextExt::to_name()

概要

文字列化された名前を取り、Name オブジェクトを返します。

構文

Name to_name(in StringName sn);

パラメータ

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 StringName sn);

パラメータ

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();

パラメータ

特にありません。

例外

特にありません。

説明

destroy メソッドを呼び出した後に、クライアント アプリケーションが BindingIterator オブジェクトに対するオペレーションを呼び出すと、OBJECT_NOT_EXIST 例外が発生します。

戻り値

特にありません。

CosNaming::BindingIterator::next_n()

概要

リストから要求したバインディングの番号を格納する BindingList データ構造体を返します。返されたバインディングの番号は、要求された数がリストを超えている場合は、それよりも小さくなります。

C++ マッピング

boolean next_n(in unsigned_long how_many, out BindingList bl);

パラメータ

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); 

パラメータ

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{};

パラメータ

特にありません。

説明

この例外は、名前が無効の場合に発生します。長さ 0 の名前は無効です。

NotEmpty

構文

exception NotEmpty{};

パラメータ

特にありません。

説明

この例外は、バインディングを含む NamingContext オブジェクトに対して destroy() メソッドが使用されたときに発生します。NamingContext オブジェクトは、破棄する前に空になっている必要があります。

NotFound

構文

exception NotFound{NotFoundReason why; Name rest_of_name;};

パラメータ

why

オペレーションが再試行可能なコンテキスト。

rest_of_name

機能していないほかの名前。

説明

この例外は、名前のコンポーネントがバインディングを識別しなかったか、バインディングのタイプが実行中のオペレーションに対して不正だった場合に発生します。why パラメータは、エラーの理由を示します。rest_of_name パラメータは、エラーの原因を示します。以下の原因が表示されます。


  ページの先頭       前  次