CORBA ORBインターフェイス

(2005.11.6更新)

CORBAを使う場合,どのインターフェイスがどのようなメソッド・プロパティを持っているか知るのは重要。

POA (The Portable Object Adapter)

(2005.11.6 この節追加。)

CORBAのオブジェクトサーバを実装する際の、ORBごとの違いを吸収するためにPOAが導入された。

(図はCORBA 3.0 第11章より)

servant がCORBAオブジェクトの実装になる。

POAは、PortableServer::POAインターフェイス実装で、次の図のプロパティ、メソッドを持つ。

しごく簡単なオブジェクトサーバ実装の手順は、

  1. root POAへの参照を得るために、まず、ORB::resolve_initial_references()を呼び出す。
  2. servantを生成する
  3. PortableServer::POA::activate_object()を呼び出してservantを活性化する。

ORBインターフェイス

CORBA 2.6.1: Minimum CORBA

module CORBA 
{ 
  typedef string ORBid;

  interface ORB 
  {
    typedef string ObjectId;
    typedef sequence <ObjectId> ObjectIdList; 

    exception InvalidName {}; 

    string object_to_string (in Object obj);
    Object string_to_object (in string str);

    // Service information operations

    boolean get_service_information (
          in ServiceType service_type,
          out ServiceInformation service_information);

    ObjectIdList list_initial_services (); 

    // Initial reference operation

    Object resolve_initial_references (in ObjectId identifier)
            raises (InvalidName); 

    void run();
  }; 
};

module CORBA { 
  typedef sequence <string> arg_list;
  ORB ORB_init (inout arg_list argv, in ORBid orb_identifier);
};

Objectインターフェイス

CORBA 2.6.1: Minimum CORBA

module CORBA {
  interface Object 
  {
    boolean is_nil ();
    Object duplicate ();
    void release ();

    boolean is_equivalent (in Object other_object);
    unsigned long hash(in unsigned long maximum);

    Policy get_policy (in PolicyType policy_type);

    DomainManagersList get_domain_managers ();
  };
};