Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第5章 アプリケーションの開発(C++言語) | > 5.3 サーバアプリケーションのプログラミング(Portable Object Adapter:POA) | > 5.3.2 POA概要 |
オブジェクトが活性状態とは、POAオブジェクトの管理するAOM(Active Object Map)に、あるServantオブジェクトがオブジェクトIDと関連付けられて登録されている状態のことを指します。
Servantオブジェクトは、インスタンスとして生成されただけでは、POAオブジェクトに認識されないため、activate_object()やactivate_object_with_id()メソッドを使用して、オブジェクトIDとの関連付けをPOAオブジェクトに登録する必要があります。Servantオブジェクトを活性化する方法を以下に示します。
Servantオブジェクトの作成(new)後に、activate_object()またはactivate_object_with_id()メソッドでAOMに登録できます。
【例】
CORBA::Environment env; // 例外情報 // Servantの生成 ODsample_intf_impl* svt = new ODsample_intf_impl(); // Servantの活性化 Poa->activate_object ( svt, env ); // ID指定によるServantの活性化 PortableServer::ObjectId_ptr userid = PortableServer::string_to_ObjectId( "USERID" ); Poa->activate_object_with_id( userid, svt, env );
注) ソース内のPoaオブジェクトはPOAクラスのインスタンス
なお、活性化の際にはオブジェクトIDが必要になりますが、オブジェクトIDの割り付けは、IdAssignmentPolicyに従って処理されます。
POAオブジェクトがIMPLICIT_ACTIVATIONポリシを持っている場合、servant_to_reference()メソッドを使用してリファレンスを生成すると、自動的にServantオブジェクトが活性化され、オブジェクトリファレンスが通知されます。暗黙的活性化については、“暗黙的活性化(Implicit Activation)”を参照してください。
【例】
CORBA::Environment env; // 例外情報 // Servantの生成 ODsample_intf_impl* svt = new ODsample_intf_impl(); // IMPLICIT_ACTIVATIONポリシを指定している場合自動的にactivateされる CORBA::Object Obj = Poa->servant_to_reference( svt, env );
注) ソース内のPoaオブジェクトはPOAクラスのインスタンス
なお、暗黙的活性化の場合は、オブジェクトIDはPOAオブジェクトによって自動的に割り付けます。このため、IdAssignmentPolicyはSYSTEM_IDに設定しておく必要があります。
目次
索引
![]() ![]() |