目次 前 次 PDF


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パラメータの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ネーム・サービスには、次の機能と制限があります。
A NULL文字は、id文字列とkind文字列の終端としてのみ使用します(空の文字列は有効とみなされます)。
ワイド文字はサポートされません。
CORBAネーム・サービスでは、名前コンポーネントの文字列の長さに制限がありません。
CORBAネーム・サービスでは、名前コンポーネントの最大数に制限がありません。ゼロの長さは無効です。
CORBAネーム・サービスでは、コンテキストのバインディング数に制限がありません。
CORBAネーム・サービスでは、バインディング数(実装全体)に制限がありません。
CORBAネーム・サービスでは、コンテキスト数に制限がありません。
CORBAネーム・サービスでは、CORBAネーム・サービスのサーバー・プロセスの開始時に、関連付けのないネーミング・コンテキストとバインドされていないバインディングを削除します。
CORBAネーム・サービスでは、CORBAネーム・サービスのサーバー・プロセスの開始時に、関連付けのないネーミング・コンテキストを削除します。
CORBAネーム・サービスには、使用履歴の最も古いアルゴリズムに基づいてバインディング・イテレータをクリーンアップするためのオプションが用意されています。詳細は、3-8ページの「バインディング・イテレータの管理」を参照してください。
CORBAネーム・サービスでは、CannotProceed例外をスローしません。
NameService環境オブジェクトへの初期リファレンスの取得
NameService環境オブジェクトは、ネームスペースのルートへの接続に使用できます。NameService環境オブジェクトを使用する場合、オブジェクト・リクエスト・ブローカ(ORB)がネームスペースのルートをロケートします。BootstrapオブジェクトまたはCORBAインターオペラブル・ネーミング・サービス(INS)のブートストラップ処理メカニズムを使用すると、NameService環境オブジェクトへの初期リファレンスを取得できます。OracleクライアントORBを使用する場合は、Oracle専用のメカニズムを使用します。別のベンダーのクライアントORBを使用する場合は、CORBA INSメカニズムを使用します。
ネームスペースへの接続の詳細は、「ステップ3: Oracle Tuxedoネームスペースに接続する」を参照してください。Oracle Tuxedoドメインのブートストラップ処理の詳細は、Oracle Tuxedoオンライン・ドキュメントの『CORBAプログラミング・リファレンス』の第4章「CORBAブートストラップ処理のプログラミング・リファレンス」を参照してください。
CORBAネーム・サービスで使用するCosNamingデータ構造体
CORBAネーム・サービスでは、次のCosNamingデータ構造体を使用します。
CosNaming::BindingList
CosNaming::BindingType
CosNaming::Istring
CosNaming::Name
CosNaming::NameComponent
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パラメータはエラーの原因を示します。次の原因が表示されます。
missing_node: rest_of_nameパラメータの最初の名前コンポーネントが、親コンテキスト内の名前でバインドされていないバインディングになっています。
not_context: ncontext型が要求されている場合に、rest_of_nameパラメータの最初の名前コンポーネントが、nobject型のバインディングになっています。
not_object: nobject型が要求されている場合に、rest_of_nameパラメータの最初の名前コンポーネントが、ncontext型のバインディングになっています。
 

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved