Interstage Application Server アプリケーション作成ガイド (CORBAサービス編) |
目次
索引
![]() ![]() |
第5章 アプリケーションの開発(C++言語) | > 5.3 サーバアプリケーションのプログラミング(Portable Object Adapter:POA) | > 5.3.2 POA概要 |
オブジェクトリファレンスは、以下の方法で生成することができます。
サーバアプリケーションは、直接オブジェクトリファレンスをPOAオブジェクトのcreate_reference()やcreate_reference_with_id()メソッドで作成することができます。この操作はオブジェクトリファレンスだけを作成します。実際のアクティブなServantオブジェクトは、後からServantManagerオブジェクトで生成される場合もあります。
【例】
CORBA::Environment env; // 例外情報 // オブジェクトリファレンスの生成 CORBA::Object _bind_obj = Poa->create_reference( "IDL:Intfid11:1.0", env ); // ID指定によるオブジェクトリファレンスの生成 PortableServer::ObjectId_ptr userid = PortableServer::string_to_ObjectId( "USERID" ); CORBA::Object _bind_obj = Poa->create_reference_with_id( userid, "IDL:Intfid11:1.0", env );
注)ソース内のPoaはPOAクラスのインスタンス
IDL:Intfid11:1.0はインタフェースリポジトリID
サーバアプリケーションはServantオブジェクトを、activate_object()またはactivate_object_with_id()メソッドより活性化します。一度Servantオブジェクトが活性化されると、サーバアプリケーションはServantオブジェクトまたはオブジェクトIDを指定して、servant_to_reference()またはid_to_reference()メソッドを発行することにより容易にオブジェクトリファレンスを作成することができます。また、POAオブジェクトがIMPLICIT_ACTIVATIONポリシで作成されていれば、servant_to_reference()を使用してリファレンスを生成した場合、自動的にServantオブジェクトがactivateされ、リファレンスが有効になります。
【例】
// Servantの生成 ODsample_intf_impl* svt = new ODsample_intf_impl(); // IMPLICIT_ACTIVATIONポリシを指定している場合 // 自動的にactivateされる CORBA::Object_ptr obj = Poa->servant_to_reference( svt, env );
注) ソース内のPoaオブジェクトはPOAクラスのインスタンス
一度オブジェクトリファレンスがクライアントに通知されると、クライアントの側から見るとそのオブジェクトリファレンスはオブジェクトの身元を持っていることになります。クライアントプログラムがそのリファレンスを使う限り、そのオブジェクトリファレンスで作られるリクエストは同一のオブジェクトのインスタンスに送信されます。
目次
索引
![]() ![]() |