ページの先頭行へ戻る
Interstage Application Server V13.1.0 アプリケーション作成ガイド(CORBAサービス編)
FUJITSU Software

5.12.3 子孫POAの作成

RootPOAとは異なるポリシでインスタンスの管理を行う場合や、インタフェースごとなど、複数のPOAにインスタンスの管理を分散させる場合、新しいPOAを生成します。

以下の例では、取得したRootPOAのメソッドを使用し、子POAを作成しています。
create_POA()の第1パラメタには、アダプタ名(生成するPOAの名前)を指定します。アダプタ名は、任意の文字列(Stringオブジェクト)を指定します。“5.11 サーバアプリケーションと環境設定との関連付け”で示したように、インプリメンテーションリポジトリIDやインタフェースリポジトリIDを指定することも可能です。
create_POA()の第3パラメタのポリシには、アプリケーション形態にあったポリシリストを指定します。
この例では、USE_DEFAULT_SERVANTを使用するPOAを作成しています。


try {
    // ポリシリスト作成
    org.omg.CORBA.Policy policies[] = new org.omg.CORBA.Policy[4]; 
    policies[0] = rootPOA.create_servant_retention_policy(
           org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN ); 
    policies[1] = rootPOA.create_request_processing_policy(
           org.omg.PortableServer.RequestProcessingPolicyValue.USE_DEFAULT_SERVANT );
    policies[2] = rootPOA.create_id_assignment_policy(
           org.omg.PortableServer.IdAssignmentPolicyValue.SYSTEM_ID );
    policies[3] = rootPOA.create_id_uniqueness_policy(
           org.omg.PortableServer.IdUniquenessPolicyValue.MULTIPLE_ID );

    // インタフェースリポジトリIDに対応するPOAオブジェクト獲得
    org.omg.PortableServer.POA  POA1 =
            rootPOA.create_POA( "childPOA", RootPOA.the_POAManager(), policies );
}
catch( java.lang.Exception e ) {
          ... // 例外処理
}

孫以下のPOAを作成する場合も上記と手順は同じです。子POAのインスタンス(上記の例では、POA1)上でcreate_POA()メソッドを発行することにより、孫POAを生成することが可能です。


注意

POAのアダプタ名(上記例では“childPOA”)には、日本語などのマルチバイト文字を使用できません。