Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド

[目次][索引][前へ][次へ]

7.3.4 POAの作成と活性化

POAは,その親POAのcreate_POAを使用して生成されます。POAには任意の名前を付けられます。ただし,同じ親を持つPOA同士の名前はすべて一意でなければなりません。二つのPOAに同じ名前を付けようとすると,CORBA例外(AdapterAlreadyExists)が発生します。

新しいPOAを生成するには,次のようにcreate_POAを使用してください。

 
POA create_POA(POA_Name, POAManager, PolicyList);
 

POAマネージャはPOAの状態(リクエストを処理するかどうかなど)を制御します。POAマネージャ名としてnullがcreate_POAに渡されると,新しいPOAマネージャオブジェクトが生成されてPOAに対応づけられます。通常は,すべてのPOAに対して同じPOAマネージャを持ちたいでしょう。POAマネージャの詳細については,「7.6 POAマネージャによるPOA管理」を参照してください。

POAマネージャ(およびPOA)は,生成後に自動的に活性化されるわけではありません。使用しているPOAに対応するPOAマネージャを活性化するには,activate()メソッドを使用してください。

コードサンプル7-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);
 

コードサンプル7-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
org.omg.PortableServer.POA myPOA =
      rootPOA.create_POA( "bank_agent_poa",
                         rootPOA.the_POAManager(),
                         policies );