POA (Portable Object Adapter)は、CORBA2.2で新しく標準的なオブジェクトアダプタとして採用された仕様です。POAとしてオブジェクトアダプタの仕様が明確化されたことにより、ORB製品ごとの仕様上の差違が排除されるため、異なるORB製品へのサーバアプリケーションの移植が容易となります。
■POAの特徴
POAオブジェクト内にAOM(Active Object Map:インスタンスの管理テーブル)を持ち、インスタンス管理を行います。サーバアプリケーションは、以下の2とおりのインスタンス管理を行うことが可能です。
サーバアプリケーションは、インスタンスを事前に作成してAOMに登録しておきます。クライアントからのリクエストを受信したときに、AOMのインスタンスが検索されServantオブジェクトが実行されます。
クライアントからのリクエストを受信したときに、POAオブジェクトはユーザ実装のServantManagerを呼び出します。ServantManagerでは、インスタンスを作成してAOMに登録します。次に、Servantオブジェクトが実行されます。
POAに対してポリシを設定することで、POAごとにインスタンス管理方法、オブジェクトの生存期間、多重動作などのポリシを指定できます。POAポリシとして、以下の種類があります。詳細については、“5.13.3 POAオブジェクト”を参照してください。
Servant関連付けポリシ: ServantRetentionPolicy
リクエスト処理ポリシ: RequestProcessingPolicy
暗黙的活性化ポリシ: ImplicitActivationPolicy
ID割り当てポリシ: IdAssignmentPolicy
オブジェクトID一意性ポリシ: IdUniquenessPolicy
生存期間ポリシ: LifespanPolicy
スレッドポリシ: ThreadPolicy