15.3.6 OAD::reg_implementationを使用したOADの登録

oadutil regコマンドを手動でまたはスクリプトで使用しなくても,Borland Enterprise Server VisiBrokerでは,クライアントアプリケーションがOAD::reg_implementationオペレーションを使って一つ以上のオブジェクトを活性化デーモンに登録できます。このオペレーションを使用すると,オブジェクトインプリメンテーションがOADとosagentに登録されます。OADは情報をインプリメンテーションリポジトリに格納し,クライアントがオブジェクトにバインドしようとした時にオブジェクトインプリメンテーションを探し,活性化できるようにします。

IDLサンプル15-3 OAD::reg_implementationオペレーション

module Activation {
. . .
  typedef sequence<ObjectStatus> ObjectStatus List;
. . .
  typedef sequence<InplementationStatus> ImplStatusList;
. . .
  interface OAD {
     // Register an implementation.
     Object reg_implementation(
           in extension::CreationImplDef impl)
        raises (DuplicateEntry, InvalidPath);
  }
}

CreationImplDef structにはOADが必要とするプロパティがあります。プロパティには,repository_id,object_name,id,path_name,activation_policy,args,およびenvがあります。これらの値を設定したり照会したりするオペレーションも用意されています。OADはこれらの追加プロパティを使用してVisiBroker ORBオブジェクトを活性化します。

IDLサンプル15-4 CreationImplDefインタフェース

struct CreationImplDef {
  CORBA::RepositoryId repository_id;
  string object_name;
  CORBA::ReferenceData id;
  string path_name;
  Policy activation_policy;
  CORBA::StringSequence args;
  CORBA::StringSequence env;
};

path_nameプロパティには,オブジェクトをインプリメントする実行可能プログラムの正確なパス名を指定します。activation_policyプロパティはサーバの活性化ポリシーを表します。argsプロパティとenvプロパティはサーバに渡されるオプションの引数と環境設定を表します。