Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
|
目次
索引

|
6.10.7 リクエスト処理
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エラーになります。
Copyright 2006 FUJITSU LIMITED