4.6.5.3 corbaname URLスキーム
corbaname URLスキームは、URLでネーミング・サービスのエントリを示せるようにcorbalocスキームの機能を拡張します。corbaname URLは、ORBコアにネーミング・サービスの実装がなくても解決できます。corbaname URLの例を次に示します。
corbaname:555objs.com#a/string/path/to/obj
このURLは、ホスト555objs.comでNamingContext型のオブジェクト(オブジェクト・キーがNamingService)を見つけることができるか、その位置で動作しているエージェントがNamingContextのリファレンスを返すことを示します。文字列化された名前a/string/path/to/objは、そのNamingContextのresolve操作の引数として使用されます。
corbaname URLはcorbaloc URLと似ていますが、corbaname URLにはネーミング・コンテキストのバインディングを識別する文字列化された名前が含まれます。#文字は、文字列化された名前の開始を示します。
URLのBNF構文は、次の表に示されています。
表4-10 URLのBNF構文
| URL要素 | 書式 | 説明 |
|---|---|---|
<corbaname>
|
|
corbaloc_objは、corbaname URLのネーミング・コンテキストを識別する部分です。構文は、corbaloc URLの場合と同じです。
|
<corbaloc_obj>
|
<obj_addr_list>[“/”<key_string>]
|
obj_addr_listの説明については、表4-9を参照してください。
|
<obj_addr_list>
|
corbaloc URLの定義と同じ | obj_addr_listの説明については、表4-9を参照してください。
|
<key_string>
|
corbaloc URLの定義と同じ | key_stringの説明については、表4-9を参照してください。
|
<string_name>
|
Stringified Name | empty string
|
string_nameの説明については、表4-9を参照してください。
|
corbaname URLの解決は、corbaloc URL処理の単純な拡張として実装されます。その実装を説明するために、次のcorbaname URLを使用します。
corbaname:<corbaloc_obj>[“#”<string_name>]
解決は次のように行われます:
- corbaname URLから
corbaloc:::<corbaloc_obj>形式のcorbaloc URLを作成します。 CORBA::ORB::string_to_objectを呼び出してCosNaming::NamingContextオブジェクトを取得し、corbaloc URLをネーミング・コンテキストのオブジェクト参照に変換します。:<string_name>をCosNaming::Nameに変換します。- 作成した
CosNaming::Nameを渡して、CosNaming::NamingContextのresolve操作を呼び出します。 CosNaming::NamingContext::resolveから返されるオブジェクト参照は、呼出し側に返す必要があります。
この解決プロセスに従うことで、ネーミング・サービスに存在しないネーミング・コンテキストのオブジェクト参照を返すことがなくなります。この手法の1つの副作用は、ネーミング・サービスのスタブがORBコアの一部であるか、resolve操作のリクエストを送信する内部メカニズムがなければならないことです。複雑な手間を避けるため、ネーミング・サービスのスタブをORBコアに埋め込むことをお薦めします。
親トピック: INSオブジェクトのURLスキーム