6.3.2 子POAの作成

rootPOAにはあらかじめ定義されたポリシーの集合があり,これらは変更できません。ポリシーとは,POAの動作とPOAが管理するオブジェクトを制御するオブジェクトのことです。別のライフスパンポリシーのような別の動作が必要なら,新しいPOAを作成できます。

POAは,create_POAを使用して既存POAの子として作成します。必要なだけの数のPOAを作成できます。

子POAは親POAのポリシーを継承しません。

次に示すサンプルでは,子POAはrootPOAから作成され,パーシステントなライフスパンポリシーを持ちます。この子POAの状態管理にはrootPOAのPOAマネージャを使用します。POAマネージャの詳細については,「6.3.4 POAの活性化」で説明します。

コードサンプル6-5 ポリシーと子POAの作成(C++)

CORBA::PolicyList policies;
policies.length(1);
policies[(CORBA::ULong)0] = rootPOA->create_lifespan_policy(
     PortableServer::PERSISTENT);
// Create myPOA with the right policies
PortableServer::POAManager_var rootManager =
     rootPOA->the_POAManager();
PortableServer::POA_var myPOA = rootPOA->create_POA(
     "bank_agent_poa", rootManager,policies );

コードサンプル6-6 ポリシーと子POAの作成(Java)

// Create policies for our persistent POA
org.omg.CORBA.Policy[ ] policies = {
  rootPOA.create_lifespan_policy(
                            LifespanPolicyValue.PERSISTENT)
};
// Create myPOA with the right policies
POA myPOA =  rootPOA.create_POA( "bank_agent_poa",
                              rootPOA.the_POAManager(),
                              policies );