4.4.3. 名前サービス |
名前サービスは、任意のオブジェクトに名前を付けることにより、クライアントが目的のオブジェクトを探し出す手助けを行います。また、Object Brokerが提供する名前サーバは登録内容をファイルに書き出すので、一度作成したオブジェクトを永続的に記憶させておくにも有効です。名前サービスは、ちょうどファイルシステムにおけるディレクトリとファイルのように階層的に名前を付けることができます。ファイルシステムのディレクトリに相当するものを名前コンテキストと呼びます。オブジェクトは、任意のディレクトリに収められたファイルに相当します。
Object Brokerでは、ファイルシステムのルートディレクトリに相当する名前コンテキストをルートコンテキストと呼んでいます。また、名前とオブジェクトの関連付けをバインディングといいます。名前コンテキストはファイルシステムのディレクトリとは異なり、名前を持たないこともあります。Object Brokerでは、名前を持たない名前コンテキストとその配下の名前コンテキスト/オブジェクトを管理するためにLostAndFoundコンテキストを提供します。ルートコンテキストおよびLostAndFoundは特別なコンテキストであり、名前の変更や削除などはできません。
4.4.3.1. CosNaming::BindingIteratorクラス |
任意のコンテキストに対して、そのコンテキストに登録されている名前の一覧を得るCosNaming::NamingContext::listオペレーションの結果、listで要求した数よりもバインディングが多いときに、余ったバインディングに対して操作を行うためのクラスです。余ったバインディングはバインディングイテレータに登録されています。バインディングイテレータに登録されている名前を小単位で繰り返し取り出すことで、呼び出し1回あたりのメモリ消費やサーバ側の負担を軽くすることができ、無理なく全ての名前を検索することができます。
destroy | バインディングイテレータを削除する |
next_n | バインディングイテレータに登録されている名前をn個返す |
next_one | バインディングイテレータに登録されている名前を1つ返す |
4.4.3.2. CosNaming::NamingContextクラス |
ファイルシステムにおけるディレクトリ操作のような働きをするクラスです。オブジェクトや名前コンテキストに名前を付けるほか、名前の一覧を取り出したり、名前からオブジェクトリファレンスを検索したりすることができます。また、名前コンテキストを作成するのもこのクラスの役割です。
bind | オブジェクトに名前を付ける |
bind_context | 名前コンテキストに名前を付ける |
bind_new_context | 名前コンテキストを生成し、名前を付ける |
destroy | 名前コンテキストを削除する |
list | 名前コンテキストに登録されている名前の一覧を得る |
new_context | 名前コンテキストを生成する |
rebind | 既存の名前を別オブジェクトに付ける |
rebind_context | 既存の名前を別の名前コンテキストに付ける |
resolve | 名前からオブジェクトリファレンスを検索する |
unbind | バインディングを削除する |
※ CosNaming::NamingContextクラスには、このほかにラウンドロビン拡張機能(Object Broker独自)があります。
4.4.3.3. CosNaming::NamingContextExtクラス |
名前の文字列表現に関するクラスです。CosNaming::NamingContextインタフェースを継承しています。
to_string | 名前シーケンスを文字列にする |
to_name | 文字列化された名前を名前シーケンスに戻す |
to_url | iiopname URLまたはcorbaname URLを生成する |
resolve_str | 文字列化された名前シーケンスからオブジェクトリファレンスを検索する |
CosNaming::BindingIterator::destroy
- バインディングイテレータを削除する
#include <orb.h> void CosNaming::BindingIterator::destroy( CORBA::Environment& env = Ob_default_environment() );
CosNaming::BindingIterator::destroyはバインディングイテレータを削除します。
ありません。
例外情報がthrowされます。
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::list,
CosNaming::BindingIterator::next_one,
CosNaming::BindingIterator::next_n
CosNaming::BindingIterator::next_n
- バインディングイテレータに登録されている名前をn個返す
#include <orb.h> CORBA::Boolean CosNaming::BindingIterator::next_n( CORBA::ULong how_many, CosNaming::BindingList*& bl, CORBA::Environment& env = Ob_default_environment() );
CosNaming::BindingIterator::next_nはバインディングイテレータに登録されているバインディングに関する情報を、要求数how_many分返します。
もし、要求数how_manyがバインディングイテレータに含まれているバインディング数以上であれば、バインディングの数分、blに返します。
また、要求数how_manyがバインディングイテレータのバインディング数未満であれば、要求数how_many分、blに返します。
blはCosNaming::Binding構造体のシーケンスです。CosNaming::Binding構造体は以下のように定義されています。
namespace CosNaming { struct Binding { CosNaming::Name binding_name; // CosNaming::NameComponentのシーケンス CosNaming::BindingType binding_type; // CosNaming::nobject, // CosNaming::ncontext }; struct NameComponent { Obi_String id; Obi_String kind; }; };
本オペレーションで返されたバインディング情報は、バインディングイテレータから削除されます。
バインディングイテレータにあるバインディングに関する情報の有無が返ります。
1 : バインディングに関する情報がある
0 : バインディングに関する情報がない
例外情報がthrowされます。
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::list,
CosNaming::BindingIterator::next_one,
CosNaming::BindingIterator::destroy
CosNaming::BindingIterator::next_one
- バインディングイテレータに登録されている名前を1つ返す
#include <orb.h> CORBA::Boolean CosNaming::BindingIterator::next_one( CosNaming::Binding*& b, CORBA::Environment& env = Ob_default_environment() );
CosNaming::BindingIterator::next_oneはバインディングイテレータに登録されているバインディングに関する情報を、1つbに返します。
bはCosNaming::Binding構造体です。CosNaming::Binding構造体は以下のように定義されています。
namespace CosNaming { struct Binding { CosNaming::Name binding_name; // CosNaming::NameComponentのシーケンス CosNaming::BindingType binding_type; // CosNaming::nobject, // CosNaming::ncontext }; struct NameComponent { Obi_String id; Obi_String kind; }; };
本オペレーションで返されたバインディング情報は、バインディングイテレータから削除されます。
バインディングイテレータにあるバインディングに関する情報の有無が返ります。
1 : バインディングに関する情報がある
0 : バインディングに関する情報がない
例外情報がthrowされます。
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::list,
CosNaming::BindingIterator::next_n,
CosNaming::BindingIterator::destroy
CosNaming::NamingContext::bind - オブジェクトに名前を付ける
#include <orb.h> void CosNaming::NamingContext::bind( const CosNaming::Name& n, CORBA::Object_ptr obj, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::bindは名前コンテキストに、バインディング(名前nとオブジェクトリファレンスobjの対応)を生成します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
本オペレーションが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CosNaming::NamingContext::AlreadyBound
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::rebind,
CosNaming::NamingContext::resolve,
CosNaming::NamingContext::unbind,
CosNaming::NamingContext::list
CosNaming::NamingContext::bind_context
- 名前コンテキストに名前を付ける
#include <orb.h> void CosNaming::NamingContext::bind_context( const CosNaming::Name& n, CosNaming::NamingContext_ptr nc, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::bind_contextは名前コンテキストに、バインディング(名前nとオブジェクトリファレンスncの対応)を生成します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CosNaming::NamingContext::AlreadyBound
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::rebind_context,
CosNaming::NamingContext::resolve,
CosNaming::NamingContext::unbind,
CosNaming::NamingContext::list
CosNaming::NamingContext::bind_new_context
- 名前コンテキストを生成し、名前を付ける
#include <orb.h> CosNaming::NamingContext_ptr CosNaming::NamingContext::bind_new_context( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::bind_new_contextは名前コンテキストを生成し、生成した名前コンテキストをこのオペレーションを発行した名前コンテキストにバインドします。つまり、このオペレーションを発行した名前コンテキストに、名前nと生成されたコンテキストのオブジェクトリファレンスとの対応(バインディング)を生成します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
生成された名前コンテキストオブジェクトが返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CosNaming::NamingContext::AlreadyBound
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind_context,
CosNaming::NamingContext::new_context,
CosNaming::NamingContext::destroy
CosNaming::NamingContext::destroy - 名前コンテキストを削除する
#include <orb.h> void CosNaming::NamingContext::destroy( CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::destroyは名前コンテキストを削除します。なお、ルートコンテキスト(名前サービスのオブジェクトリファレンスと同一)およびLostAndFoundに対してdestroyを呼び出してはいけません。ルートコンテキストおよびLostAndFoundに対してdestroyを呼び出した場合はenvにCORBA::BAD_PARAMシステム例外が返ります。
ありません。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotEmpty
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::new_context,
CosNaming::NamingContext::bind_new_context,
CosNaming::NamingContext::unbind
本オペレーションは、削除される名前コンテキストが他の名前コンテキストからバインドされていても、名前コンテキストを削除し、正常終了します。削除された名前コンテキストをバインドしている名前コンテキストのバインディングは削除されません。バインディングを削除するには、削除された名前コンテキストをバインディングしていた名前コンテキストに対してCosNaming::NamingContext::unbindを行ってください。
CosNaming::NamingContext::list
- 名前コンテキストに登録されている名前の一覧を得る
#include <orb.h> void CosNaming::NamingContext::list( CORBA::ULong how_many, CosNaming::BindingList*& bl, CosNaming::BindingIterator_ptr& bi, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::listは名前コンテキストに登録されているバインディングを、要求数how_many分返します。
もし、要求数how_manyが名前コンテキストのバインディング数以上であれば、バインディングの数分、blに返します。
このとき、バインディングイテレータのオブジェクトリファレンスには、nilオブジェクトが返ります。
また、要求数how_manyが名前コンテキストのバインディング数未満であれば、バインディングイテレータを生成し、残りのバインディングに関する情報を、バインディングイテレータにコピーします。そして、biに生成したバインディングイテレータのオブジェクトリファレンスを、blに要求数how_many分のバインディング情報を返します。
blはCosNaming::Binding構造体のシーケンスです。CosNaming::Binding構造体は以下のように定義されています。
namespace CosNaming { struct Binding { CosNaming::Name binding_name; // CosNaming::NameComponentのシーケンス CosNaming::BindingType binding_type; // CosNaming::nobject, // CosNaming::ncontext }; struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
CORBA::ORB::resolve_initial_references,
CosNaming::BindingIterator::next_one,
CosNaming::BindingIterator::next_n,
CosNaming::BindingIterator::destroy
CosNaming::NamingContext::new_context - 名前コンテキストを生成する
#include <orb.h> CosNaming::NamingContext_ptr CosNaming::NamingContext::new_context( CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::new_contextは名前コンテキストを生成します。
生成された名前コンテキストオブジェクトが返されます。
例外情報がthrowされます。
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind_new_context,
CosNaming::NamingContext::destroy
CosNaming::NamingContext::rebind
- 既存の名前を別オブジェクトに付ける
#include <orb.h> void CosNaming::NamingContext::rebind( const CosNaming::Name& n, CORBA::Object_ptr obj, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::rebindは、名前コンテキストのバインディングに使われている名前nを、別なオブジェクトリファレンスobjにつけなおします。したがって、以前、名前nをつけられていたオブジェクトリファレンスに対応するバインディングは失われます。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind,
CosNaming::NamingContext::resolve,
CosNaming::NamingContext::unbind,
CosNaming::NamingContext::list
CosNaming::NamingContext::rebind_context
- 既存の名前を別の名前コンテキストに付ける
#include <orb.h> void CosNaming::NamingContext::rebind_context( const CosNaming::Name& n, CosNaming::NamingContext_ptr nc, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::rebind_contextは、名前コンテキストのバインディングに使われている名前nを、別な名前コンテキストncにつけなおします。
したがって、以前、名前nをつけられていた名前コンテキストに対応するバインディングは失われます。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind_context,
CosNaming::NamingContext::resolve,
CosNaming::NamingContext::unbind,
CosNaming::NamingContext::list
CosNaming::NamingContext::resolve
- 名前からオブジェクトリファレンスを検索する
#include <orb.h> CORBA::Object_ptr CosNaming::NamingContext::resolve( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::resolveは名前コンテキストから、名前nに対応するオブジェクトリファレンスを検索します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
検索した結果、該当したオブジェクトリファレンスが返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind,
CosNaming::NamingContext::rebind,
CosNaming::NamingContext::bind_context,
CosNaming::NamingContext::rebind_context,
CosNaming::NamingContext::unbind,
CosNaming::NamingContext::list
CosNaming::NamingContext::unbind - バインディングを削除する
#include <orb.h> void CosNaming::NamingContext::unbind( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::unbindは名前コンテキストから、名前nに対応するバインディングを削除します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
ありません。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName
CORBA::ORB::resolve_initial_references,
CosNaming::NamingContext::bind,
CosNaming::NamingContext::rebind,
CosNaming::NamingContext::bind_context,
CosNaming::NamingContext::rebind_context
CosNaming::NamingContextExt::to_string
- 名前シーケンスを文字列にする
#include <orb.h> CosNaming::NamingContextExt::StringName CosNaming::NamingContextExt::to_string( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContextExt::to_stringは引数nの名前シーケンスを文字列表現に変換します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
idとkindは'.'で区切ります。kindが空文字列の場合は'.'を省略します。名前の階層は'/'で区切ります。また、'/', '.', '\'を文字として扱う場合は'\'を使います。
例えば、以下に示す名前シーケンスがあるとします。
No. | id | kind |
---|---|---|
0 | ||
1 | ||
2 | ||
3 |
このとき、CosNaming::NamingContextExt::to_stringによって返される文字列は以下のとおりです。
"a/.1/\/x\.y\\z.2/b.3"
名前シーケンスを表す文字列が返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::InvalidName
CosNaming::NamingContextExt::to_name,
CosNaming::NamingContextExt::to_url,
CosNaming::NamingContextExt::resolve_str
CosNaming::NamingContextExt::to_name
- 文字列化された名前を名前シーケンスに戻す
#include <orb.h> CosNaming::Name* CosNaming::NamingContextExt::to_name( const char* sn, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContextExt::to_nameは文字列snを名前シーケンスに復元します。
名前シーケンスはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
名前シーケンスを文字列表現するには、idとkindを'.'で区切ります。kindが空文字列の場合は'.'を省略します。名前の階層は'/'で区切ります。また、'/', '.', '\'を文字として扱う場合は'\'を使います。
例えば、以下に示す名前シーケンスを文字列で表すとします。
No. | id | kind |
---|---|---|
0 | ||
1 | ||
2 | ||
3 |
この名前シーケンスを表す文字列は以下のとおりです。
"a/.1/\/x\.y\\z.2/b.3"
復元された名前シーケンスが返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::InvalidName
CosNaming::NamingContextExt::to_string
CosNaming::NamingContextExt::to_url
- iiopname URLまたはcorbaname URLを生成する
#include <orb.h> CosNaming::NamingContextExt::URLString CosNaming::NamingContextExt::to_url( const char* addrkey, const char* sn, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContextExt::to_urlはiiopname URLまたはcorbaname URLを生成します。
生成するURL文字列がiiopname URLかcorbaname URLかは、"ToUrlForIiopname"の設定により異なります。 詳細は、 [ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.10. Object Broker > 1.10.3. WebOTX Object Broker C++ における環境設定 ] を参照してください。
addrkeyには、corbalocサーバアドレスのリストを指定します。ToUrlForIiopnameが"false"のときは、アドレスのリストの後ろに'/'区切りでオブジェクトキーを追加することができます。
snには文字列化した名前シーケンスを指定します。
名前シーケンスはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
名前シーケンスを文字列表現するには、idとkindを'.'で区切ります。kindが空文字列の場合は'.'を省略します。名前の階層は'/'で区切ります。また、'/', '.', '\'を文字として扱う場合は'\'を使います。
例えば、以下に示す名前シーケンスがあるとします。
No. | id | kind |
---|---|---|
0 | ||
1 | ||
2 | ||
3 |
この名前シーケンスを表す文字列は以下のとおりです。
"a/.1/\/x\.y\\z.2/b.3"
引数addrkeyを"//abc.co.jp"とし、引数snを上記の名前シーケンスを表す文字列とすると、返される文字列は以下のとおりです。
ToUrlForIiopname未設定時: "iiopname://abc.co.jp/a/.1/\/x\.y\\z.2/b.3" ToUrlForIiopname=false設定時: "corbaname://abc.co.jp#a/.1/\/x\.y\\z.2/b.3"
引数addrkeyが空文字列のときは、以下のとおりになります。
ToUrlForIiopname未設定時: "iiopname:///a/.1/\/x\.y\\z.2/b.3" ToUrlForIiopname=false設定時: "corbaname:///#a/.1/\/x\.y\\z.2/b.3"
iiopname URLまたはcorbaname URLが返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContextExt::InvalidAddress
CosNaming::NamingContext::InvalidName
CosNaming::NamingContextExt::to_string
ToUrlForIiopnameが未設定もしくは"false"以外に設定されているときは、addrkeyにオブジェクトキーを追加してはいけません。
CosNaming::NamingContextExt::resolve_str
- 文字列化された名前シーケンスからオブジェクトリファレンスを検索する
#include <orb.h> CORBA::Object_ptr CosNaming::NamingContextExt::resolve_str( const char* n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContextExt::resolve_strは文字列化した名前シーケンスnに対応するオブジェクトリファレンスを検索します。
名前シーケンスはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
namespace CosNaming { struct NameComponent { Obi_String id; Obi_String kind; }; };
名前シーケンスを文字列表現するには、idとkindを'.'で区切ります。kindが空文字列の場合は'.'を省略します。名前の階層は'/'で区切ります。また、'/', '.', '\'を文字として扱う場合は'\'を使います。
例えば、以下に示す名前シーケンスを文字列で表すとします。
No. | id | kind |
---|---|---|
0 | ||
1 | ||
2 | ||
3 |
この名前シーケンスを表す文字列は以下のとおりです。
"a/.1/\/x\.y\\z.2/b.3"
検索した結果、該当したオブジェクトリファレンスが返されます。
例外情報がthrowされます。
本オペレーションによって名前サービスが返す例外一覧を以下に示します。
CosNaming::NamingContext::NotFound
この例外は、2つの属性を持っています。
CosNaming::NamingContext::NotFoundReason why; // 最後以外のネームコンポネントに対応するバインディングが // 存在しない場合 // CosNaming::NamingContext::missing_node // // 最後以外のネームコンポネントが名前コンテキストでない場合 // CosNaming::NamingContext::not_context CosNaming::Name rest_of_name; // 検索に失敗した名前シーケンス
CosNaming::NamingContext::CannotProceed(Object Brokerではこの例外は返りません)
この例外は、2つの属性を持っています。
CosNaming::NamingContext cxt; // 名前コンテキスト
CosNaming::Name rest_of_name; // 名前シーケンス
これらの属性を用いることで引き続き名前を検索することができます。
CosNaming::NamingContext::InvalidName