■POAオブジェクトの検索
クライアントからのリクエスト受信時に、インタフェースリポジトリIDに対応するPOAオブジェクトがサーバプロセス上に存在しなければ、親のPOAオブジェクトはAdapterActivatorオブジェクトを呼び出します。AdapterActivatorオブジェクトでは、要求されたPOAオブジェクトを作成します。AdapterActivatorオブジェクトはユーザが作成する必要があり、事前にPOAオブジェクトに登録しておく必要があります。もし、AdapterActivatorオブジェクトが登録されていない場合、クライアントはOBJECT_NOT_EXIST例外を受け取ります。
■Servantオブジェクトの検索
クライアントからのリクエストを受信時に、POAオブジェクトはAOMに登録されているServantオブジェクトを検索します。なお、AOMを使用するかどうかは、対象のPOAオブジェクトがRETAINポリシ(使用する)とNON_RETAINポリシ(使用しない)のどちらが指定されているかによります。
RETAINポリシが指定され、目的のServantオブジェクトがAOM内にみつかった場合、検索処理はそこで終了し、Servantオブジェクトのメソッドを実行します。Servantオブジェクトがみつからなかった場合や、NON_RETAINの場合は、以下のRequestProcessingポリシに従って処理します。
USE_DEFAULT_SERVANT
対象のServantオブジェクトがみつからなかった場合は、デフォルトのServantオブジェクトに処理を任せる方法です。この場合、あらかじめset_servant()によりデフォルトのServantオブジェクトを登録しておく必要があります。もし、Default Servantオブジェクトが登録されていなければ、OBJ_ADAPTERエラーとなります。
USE_SERVANT_MANAGER
対象のServantオブジェクトがみつからなかった場合は、ServantManagerオブジェクトにServantオブジェクトを検索する処理を任せる方法です。
リクエストを扱えるServantオブジェクトを見つけるため、POAオブジェクトはincarnate()/preinvoke()を呼び出します(メソッド選択は、POAオブジェクトのNON_RETAIN/RETAINポリシに依存します)。ServantManagerオブジェクトは、見つけたServantオブジェクトをPOAオブジェクトに通知します。この場合、あらかじめset_servant_manager()によりServantManagerオブジェクトを登録しておく必要があります。もし、ServantManagerオブジェクトが登録されていなければ、OBJ_ADAPTERエラーとなります。
USE_ACTIVE_OBJECT_MAP_ONLY
この場合、OBJECT_NOT_EXISTエラーとなります。