rootPOAにはあらかじめ定義されたポリシーの集合があり,これらは変更できません。ポリシーとは,POAの動作とPOAが管理するオブジェクトを制御するオブジェクトのことです。別のライフスパンポリシーのような別の動作が必要なら,新しいPOAを作成できます。
POAは,create_POAを使用して既存POAの子として作成します。必要なだけの数のPOAを作成できます。
次に示すサンプルでは,子POAはrootPOAから作成され,パーシステントなライフスパンポリシーを持ちます。この子POAの状態管理にはrootPOAのPOAマネージャを使用します。POAマネージャの詳細については,「6.3.4 POAの活性化」で説明します。
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 );
// 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 );