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

第5章 アプリケーションの開発(C++言語)> 5.3 サーバアプリケーションのプログラミング(Portable Object Adapter:POA)> 5.3.4 静的スケルトンインタフェース

5.3.4.3 子孫POAの作成

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

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

  CORBA::PolicyList   policies( 4 );   // ポリシリスト
  CORBA::Environment  env;             // 例外情報
      
  try {
      // ポリシリスト作成
      policies.length( 4 );
      policies[0] = rootPOA->create_servant_retention_policy(
             PortableServer::NON_RETAIN, env ); 
      policies[1] = rootPOA->create_request_processing_policy(
             PortableServer::USE_DEFAULT_SERVANT, env );
      policies[2] = rootPOA->create_id_assignment_policy(
             PortableServer::SYSTEM_ID, env );
      policies[3] = rootPOA->create_id_uniqueness_policy(
             PortableServer::MULTIPLE_ID, env );

      // インタフェースリポジトリID に対応するのPOAオブジェクト獲得
      PortableServer::POA_ptr  POA1 =
              rootPOA->create_POA( "childPOA", rootPOA->the_POAManager(), policies, env );
  }
  catch( CORBA::Exception& e ) {
      ... // 例外情報
  }

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

注意事項

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


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

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