3.2.2.1 明示的なアクティブ化

アプリケーション・コードでは、processアクティブ化ポリシーを使用するオブジェクトに関して、TPフレームワークのオン・デマンド・アクティブ化機能を無効にすることができます。アプリケーションでは、TP::create_active_object_reference呼出しを使用して、オブジェクトを「事前アクティブ化」、つまり呼出しの前にアクティブ化することができます。

事前アクティブ化の仕組みは次のとおりです。アプリケーションは、オブジェクト参照を作成する前に、サーバントをインスタンス化して、その状態を初期化します。アプリケーションはTP::create_active_object_referenceを使用して、オブジェクトをアクティブ・オブジェクト・マップに追加、つまりサーバントとObjectIdを関連付けます。最初の呼出しが行われると、TPフレームワークが、オブジェクト参照を作成したプロセスに直ちにリクエストを転送してから、既存のサーバントに転送します。この際、オブジェクトに対する2番目以降の呼出しと同じように、Server::create_servantに次いでサーバントのactivate_objectメソッドを呼び出す必要はありません。こうしたオブジェクトのオブジェクト参照は別のサーバーを指さないので、アクティブ化されている限り、オブジェクトがオン・デマンドでアクティブ化されることはありません。

事前アクティブ化されたオブジェクトにはprocessアクティブ化ポリシーが設定されているので、プロセスの終了またはTP::deactivateEnable呼出しのいずれかのイベントが発生するまで、オブジェクトはアクティブ化されたままとなります。