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

[目次][索引][前へ][次へ]

7.5 サーバントとサーバントマネージャの使用

サーバントマネージャは,サーバントを見つけて返す,サーバントを非活性化する,という2種類のオペレーションを行います。サーバントマネージャは,非アクティブなオブジェクトに対するリクエストが受信された時にPOAがオブジェクトを活性化できるようにします。サーバントマネージャの使用は任意です。例えば,起動時にサーバがすべてのオブジェクトをロードする場合は,サーバントマネージャは不要です。サーバントマネージャは,ForwardRequest例外を使用してほかのオブジェクトにリクエストを転送するようにクライアントに知らせることもできます。

サーバントは,インプリメンテーションのアクティブなインスタンスです。POAはアクティブなサーバントとサーバントのオブジェクトIDのマップを維持します。クライアントリクエストを受信すると,POAはまずマップをチェックして(クライアントリクエストに埋め込まれている)オブジェクトIDが記録されているかどうかを調べます。このオブジェクトIDが見つかれば,POAはリクエストをサーバントに転送します。オブジェクトIDがマップになければ,サーバントマネージャは適切なサーバントの探索と活性化を要求されます。これは,あくまでもシナリオ例です。正確なシナリオは実際に使用するPOAポリシーによって異なります。サーバントマネージャ機能の例を図7-2に示します。

図7-2 サーバントマネージャ機能の例

[図データ]

サーバントマネージャにはServantActivatorとServantLocatorという二つのタイプがあります。どのコールバックを使用するかは,設定済みのポリシーのタイプによって決定します。POAポリシーの詳細については,「7.2 POAポリシー」を参照してください。一般には,ServantActivatorがパーシステントオブジェクトを活性化し,ServantLocatorがトランジェントオブジェクトを活性化します。

C++の場合
サーバントマネージャを使用するには,RequestProcessingPolicy::USE_SERVANT_MANAGERと,サーバントマネージャのタイプを定義するポリシー(ServantActivatorの場合はServantRetentionPolicy::RETAIN,ServantLocatorの場合はServantRetentionPolicy::NON_RETAIN)を指定しなければなりません。

Javaの場合
サーバントマネージャを使用するには,RequestProcessingPolicy.USE_SERVANT_MANAGERと,サーバントマネージャのタイプを定義するポリシー(ServantActivatorの場合はServantRetentionPolicy.RETAIN,ServantLocatorの場合はServantRetentionPolicy.NON_RETAIN)を指定しなければなりません。
<この節の構成>
7.5.1 ServantActivator
7.5.2 ServantLocator