4.4.7.5. 名前サーバのラウンドロビン拡張機能 |
本書では同一の名前でresolveを呼んだ場合、呼び出すたびに別のオブジェクトを返すためのObject Broker独自の拡張機能(この機能をラウンドロビン機能と呼びます)に特化したインタフェースについて説明します。これらはCosNaming::NamingContextクラスのメソッドとして実装されています。この機能を有効にするには、設定で"NameServiceRoundRobinをonにする"必要があります。
詳細は、 [ リファレンス集 運用管理・設定編 > 1. コンフィグレーション(設定一覧) > 1.10. Object Broker > 1.10.1. Object Broker設定項目・設定方法 ] を参照下さい。
4.4.7.5.1. CosNaming::NamingContextクラス |
use_rr | ラウンドロビン検索を指定する |
clear_rr | ラウンドロビン検索を解除する |
bind_rr | オブジェクトに名前を付ける |
rebind_rr | 既存の名前を別オブジェクトに付ける |
unbind_rr | バインディングを削除する |
CosNaming::NamingContext::use_rr - ラウンドロビン検索を指定する
#include <orb.h> void CosNaming::NamingContext::use_rr( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::use_rrは名前コンテキストで名前nのresolveを実行するときに、ラウンドロビン検索を使用することを指定します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
struct CosNaming::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
CosNaming::NamingContext::rebind_rr,
CosNaming::NamingContext::bind_rr,
CosNaming::NamingContext::unbind_rr,
CosNaming::NamingContext::clear_rr
CosNaming::NamingContext::clear_rr - ラウンドロビン検索を解除する
#include <orb.h> void CosNaming::NamingContext::clear_rr( const CosNaming::Name& n, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::clear_rrは名前コンテキストで名前nのresolveを実行するときに、ラウンドロビン検索を使用せず、通常の検索を使用することを指定します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
struct CosNaming::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
CosNaming::NamingContext::rebind_rr,
CosNaming::NamingContext::bind_rr,
CosNaming::NamingContext::unbind_rr,
CosNaming::NamingContext::use_rr
CosNaming::NamingContext::bind_rr - オブジェクトに名前を付ける
#include <orb.h> void CosNaming::NamingContext::bind_rr( const CosNaming::Name& n, CORBA::Object_ptr obj, CORBA::ULong i, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::bind_rrは名前コンテキストに、バインディング(名前nとオブジェクトリファレンスobjの対応)をラウンドロビン検索のi番目に返されるオブジェクトとして生成します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
struct CosNaming::NameComponent { Obi_String id; Obi_String kind; };
引数iは必ずしも連番でなくてもかまいませんが、resolveによる検索時の性能は劣化します。また、連番になっていなかった場合、検索される順番は前倒しになります。たとえば、1番目と3番目として登録されていたとすると、実際の検索は1,3,1,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
CosNaming::NamingContext::AlreadyBound
CosNaming::NamingContext::bind,
CosNaming::NamingContext::rebind_rr,
CosNaming::NamingContext::unbind_rr,
CosNaming::NamingContext::rebind_rr
- 既存の名前を別オブジェクトに付ける
#include <orb.h> void CosNaming::NamingContext::rebind_rr( const CosNaming::Name& n, CORBA::Object_ptr obj, CORBA::ULong i, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::rebind_rrは、名前コンテキストのバインディングにラウンドロビンのi番目として使われている名前nを、別なオブジェクトリファレンスobjにつけなおします。したがって、以前、名前nをつけられていたオブジェクトリファレンスに対応するバインディングは失われます。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
struct CosNaming::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::rebind,
CosNaming::NamingContext::bind_rr,
CosNaming::NamingContext::unbind_rr,
CosNaming::NamingContext::unbind_rr - バインディングを削除する
#include <orb.h> void CosNaming::NamingContext::unbind_rr( const CosNaming::Name& n, CORBA::ULong i, CORBA::Environment& env = Ob_default_environment() );
CosNaming::NamingContext::unbind_rrは名前コンテキストから、ラウンドロビンのi番目の名前nに対応するバインディングを削除します。
nはCosNaming::NameComponent構造体のシーケンスです。CosNaming::NameComponent構造体は以下のように定義されています。
struct CosNaming::NameComponent { Obi_String id; Obi_String kind; };
本関数を呼んだ結果、連番でなくなってもかまいませんが、resolveによる検索時の性能は劣化します。また、連番になっていなかった場合、検索される順番は前倒しになります。たとえば、1番目から3番目まで登録されていたとして2番目を削除したとすると、実際の検索は1,3,1,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
CosNaming::NamingContext::unbind,