Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


13.1 ロケーションサービスとは

ロケーションサービスはCORBAの仕様に対する拡張機能で,オブジェクトインスタンスを見つける汎用機能を提供します。ロケーションサービスは,自身が知っているインスタンスのリストを格納しているカタログを保守するスマートエージェントと直接通信します。ロケーションサービスから問い合わせがあると,スマートエージェントはその問い合わせをほかのスマートエージェントに転送し,その応答を集めてロケーションサービスに返します。

ロケーションサービスは,BY_INSTANCEポリシーを指定したPOAに登録されたすべてのオブジェクトインスタンスについて知っています。これらのオブジェクトを含むサーバは,手動起動またはOADによる自動起動ができます。

図13-1はこの概念を表したものです。

図13‒1 スマートエージェントを使用した,オブジェクトのインスタンスの検索

[図データ]

サーバは,インスタンスを生成するときにインスタンスのスコープを指定します。グローバルにスコープされたインスタンスだけがスマートエージェントに登録されます。

ロケーションサービスは,スマートエージェントが各オブジェクトインスタンスについて保持している情報を使用できます。各オブジェクトインスタンスに対して,ロケーションサービスはIDLサンプル13-1のようなObjLocation::Desc構造体の中にカプセル化された情報を保持しています。

IDLサンプル13-1 Desc構造体のIDL
struct Desc {
     Object ref;
     ::IIOP::ProfileBodyValue iiop_locator;
     string repository_id;
     string instance_name;
     boolean activable;
     string agent_hostname;
};
typedef sequence<Desc> DescSeq;

Desc構造体のIDLには次のような情報が入っています。

ロケーションサービスは負荷分散や監視などの目的に役立ちます。あるオブジェクトの複製が幾つかのホスト上にある場合,複製を提供するホスト名と各ホストの最近の負荷平均のキャッシュを維持するバインドインタセプタを配置できます。インタセプタは,オブジェクトのインスタンスを現在提供しているホストについてロケーションサービスに尋ねることでキャッシュを更新してから,ホストに問い合わせて負荷平均を取得します。そのあと,インタセプタは最も負荷が軽いホスト上の複製に対するオブジェクトリファレンスを返します。インタセプタの記述の詳細については,「19. ポータブルインタセプタの使用」を参照してください。