CORBAネーム・サービスの使用

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

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パラメータの2つのダッシュ(--)の後に、cnsコマンドライン・オプションを入力します。コマンドライン・オプションは次のとおりです。

-b bucketcount

ネーミング・コンテキストをメモリー内にロケートするために、サーバー・プロセスが内部で使用するハッシュ表のバケット数を指定します。各ネーミング・コンテキストには専用のハッシュ表があります。Oracle Tuxedoアプリケーションが各ネーミング・コンテキストで少数のバインディングを使用する場合は、小さいバケット数(4や5など)を使用してください。Oracle Tuxedoアプリケーションが各ネーミング・コンテキストで多数のバインディング(例: 1000)を使用する場合は、大きいバケット数(50など)を使用してください。

-c

CORBAネーム・サービスのサーバー・プロセスの開始時に永続ストレージ・ファイルを圧縮します。ネーミング・コンテキストおよびアプリケーション・オブジェクトがネームスペースに追加されたり、ネームスペースから削除されるたびに、永続ストレージ・ファイルのサイズは増え続けます。圧縮により、永続ストレージ・ファイルのサイズを最小限にできます。バインドされていないバインディングは圧縮中に削除されます。バインディングが関連付けられているオブジェクトがネームスペースから削除されても、バインドされていないバインディングはネームスペース内に残ります。-p コマンドライン・オプションは、 -c コマンドライン・オプションを指定する場合に指定する必要があります。

-d

サーバー・プロセスの開始時に、関連付けのないコンテキストを削除するようにCORBAネーム・サービスのサーバー・プロセスに指示します。関連付けのないコンテキストは、他のどのコンテキストにもバインドされていないコンテキストです。これは、コンテキストに一度もバインドされていない可能性があり、バインディングが明示的に破棄されたか、再バインドによって破棄されています。-pコマンドライン・オプションは、-dコマンドラインオプションを指定する場合に指定する必要があります。

-f filename

CORBAネーム・サービスのサーバー・プロセスがネームスペースのルートのインターオペラブル・オブジェクト・リファレンス(IOR)を書き込む先のファイルを指定します。

-M maxiterators

任意の時点での未処理のバインディング・イテレータの最大数を定義します。
バインディング・イテレータは、クライアント・アプリケーションがCosNaming::NamingContext::list()メソッドを使用する場合に作成されます。バインディング・イテレータを使用してクライアント・アプリケーションを実行した後にバインディング・イテレータを削除するには、クライアント・アプリケーションでCosNaming::BindingIterator::destroy()メソッドを使用する必要があります。クライアント・アプリケーションがバインディング・イテレータを明示的に削除しなかった場合は、-Mコマンドライン・オプションで指定した値に数が達すると、CORBAネーム・サービスのサーバー・プロセスによってバインディング・イテレータが削除されます。バインディング・イテレータの最大数に達してから、新しいバインディング・イテレータを作成しようとすると、クライアント・アプリケーションで使用中のバインディング・イテレータが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コマンドによって作成されているため、-oコマンドライン・オプションを-Nコマンドライン・オプションとともに指定する必要はありません。-oコマンドライン・オプションを-Nコマンドライン・オプションとともに使用しても、-oコマンドライン・オプションの情報は無視されます。

-o ior_filename

-fコマンドライン・オプションで指定したネームスペースにバインドするオブジェクトのIORを格納するファイルを指定します。-Cコマンドライン・オプションが指定されている場合は、ncontext型のオブジェクトが作成され、指定されていない場合は、nobject型のオブジェクトが作成されます。

-r

名前にすでにバインディングがある場合でも、アプリケーション・オブジェクトまたはネーミング・コンテキスト・オブジェクトのバインディングを作成します。-rコマンドライン・オプションを指定しないcnsbindコマンドのデフォルトの動作では、指定したオブジェクトのバインディングがすでに存在する場合に、AlreadyBound例外が発生します。cnsbindコマンドの呼出し時に、AlreadyBoundまたはその他の例外が戻されると、コマンドが終了し、"Error, already bound"のメッセージが表示されます。

-T TObjAddr

Oracle Tuxedoドメインのホストとポートを指定します。CORBAネーム・サービスのサーバー・プロセスに接続する前に、サーバー・プロセスが実行されるOracle Tuxedoドメインに、cnsbindコマンドでログインする必要があります。このコマンドライン・オプションは、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ネーム・サービスのサーバー・プロセスに接続する前に、サーバー・プロセスが実行されるOracle Tuxedoドメインに、cnslsコマンドでログインする必要があります。このコマンドライン・オプションは、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

説明

cnsubindコマンドでは、ネームスペースのバインディングを解除します。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ネーム・サービスのサーバー・プロセスに接続する前に、サーバー・プロセスが実行されるOracle Tuxedoドメインに、cnsbindコマンドでログインする必要があります。このコマンドライン・オプションは、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オンライン・ドキュメントの『Oracle Tuxedo CORBAプログラミング・リファレンス』の第4章「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にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの1つがネーミング・コンテキストに解決されていません。

NotFound

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

説明

bindでバインドされているネーミング・コンテキストは、解決するために複合名が渡されるときに名前解決に参加しません。

戻り値

なし。

CosNaming::NamingContext::bind_context()

形式

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

C++マッピング

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

パラメータ

n

目的のネーミング・コンテキスト名で初期化されるNameデータ構造体。シーケンス内の最初のNameComponentデータ構造体をネーミング・コンテキストに解決する必要があります。

nc

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

例外

AlreadyBound

bind()メソッドまたはbind_context()メソッドのNameが、ネーミング・コンテキスト内の別のオブジェクトにすでにバインドされています。

InvalidName

指定したNameにゼロの名前コンポーネントがあるか、最初の名前コンポーネントの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にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの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にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの1つがネーミング・コンテキストに解決されていません。

NotFound

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

説明

このメソッドでは、名前のバインディングのシーケンスを戻します。blリストに該当するより多くの名前のバインディングが存在する場合は、BindingIteratorオブジェクトが戻されます。BindingIteratorオブジェクトを使用すると、バインディングの次のセットを取得できます。BindingList (C++)オブジェクトでは、リクエストされた番号のバインディングがリストの最後にある場合は、その番号よりも小さい番号のバインディングを戻すことができます。biNULL参照が戻された場合、blにはすべてのバインディングが格納されています。

戻り値

なし。

CosNaming::NamingContext::new_context()

形式

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

C++マッピング

NamingContext new_context(); 

パラメータ

なし。

例外

なし。

説明

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

戻り値

新しいネーミング・コンテキストへの参照を戻します。

CosNaming::NamingContext::rebind()

形式

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

C++マッピング

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

パラメータ

n

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

obj

命名対象のオブジェクト。

例外

InvalidName

指定したNameデータ構造体にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの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データ構造体にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの1つがネーミング・コンテキストに解決されていません。

NotFound

名前のコンポーネントでバインディングを識別しないか、バインディングの型が実行中の操作に対して間違っています。バインディングがすでに存在するか、バインディングの型が間違っているために例外が発生した場合、例外のrest_of_nameメンバーの長さは1になります。

説明

rebind_contextでバインドされているネーミング・コンテキストは、解決するために複合名が渡されるときに名前解決に参加しません。

戻り値

なし。

CosNaming::NamingContext::resolve()

形式

指定したNameの解決を試みます。

C++マッピング

Object resolve(in Name n); 

パラメータ

n

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

例外

InvalidName

指定したNameデータ構造体にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの1つがネーミング・コンテキストに解決されていません。

NotFound

名前のコンポーネントでバインディングを識別しないか、バインディングの型が実行中の操作に対して間違っています。

説明

指定したNameは、オブジェクトのバインドに使用される名前と正確に一致する必要があります。CORBAネーム・サービスでは、オブジェクトの型を戻しません。オブジェクトを適切な型にナロー変換する操作は、クライアント・アプリケーションで実行します。

戻り値

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

CosNaming::NamingContext::unbind()

形式

bind()メソッドの逆演算を実行し、指定したNameに関連付けられたバインディングを削除します。

C++マッピング

void unbind(in Name n); 

パラメータ

n

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

例外

InvalidName

指定したNameデータ構造体にゼロの名前コンポーネントがあるか、最初の名前コンポーネントの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

名前が無効です。長さがゼロの名前は無効です。

NotFound

名前のコンポーネントでバインディングを識別しないか、バインディングの型が実行中の操作に対して間違っています。

説明


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

戻り値

バインドされた名前への参照。

CosNaming::NamingContextExt::to_name()

形式

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

構文

Name to_name(in StringName sn);

パラメータ

sn

Nameオブジェクトに対して解決する文字列化された名前。

例外

InvalidName

名前が無効です。長さがゼロの名前は無効です。

説明

このメソッドでは、文字列化された名前を受け付け、Nameオブジェクトを戻します。名前が無効の場合は、エラーが戻されます。

戻り値

Nameオブジェクトを戻します。

CosNaming::NamingContextExt::to_string()

形式

Nameオブジェクトを受け付け、文字列化された名前を戻します。

構文

StringName to_string(in Name n);

パラメータ

n

文字列化された名前に変換するNameオブジェクト。

例外

InvalidName

名前が無効です。長さがゼロの名前は無効です。

説明

このメソッドでは、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

名前が無効です。長さがゼロの名前は無効です。

戻り値

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パラメータの値がゼロの場合に発生します。

戻り値

リストの上限に達した場合に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{};

パラメータ

なし。

説明

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

NotEmpty

構文

exception NotEmpty{};

パラメータ

なし。

説明

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

NotFound

構文

exception NotFound{NotFoundReason why; Name rest_of_name;};

パラメータ

why

再試行可能な操作のコンテキスト。

rest_of_name

機能していないその他の名前。

説明

この例外は、名前のコンポーネントでバインディングを識別しないか、バインディングの型が実行中の操作に対して間違っている場合に発生します。whyパラメータはエラーの理由を示します。rest_of_nameパラメータはエラーの原因を示します。次の原因が表示されます。


  先頭に戻る       前  次