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

第6章 アプリケーションの開発(Java言語)> 6.12 サーバアプリケーションのプログラミング (静的スケルトンインタフェース)

6.12.3 子孫POAの作成

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

 以下の例では、取得したRootPOAのメソッドを使用して、子POAを作成しています。create_POA()の第1パラメタにはアダプタ名(生成するPOAの名前)を指定します。アダプタ名は任意の文字列(Stringオブジェクト)を指定します。(“サーバアプリケーションと環境設定との関連付け”で示したように、インプリメンテーションリポジトリ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")に日本語などのマルチバイト文字は使用できません。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005