(1) Factoryインタフェースのオブジェクトリファレンスの獲得
ネーミングサービスより、Factoryインタフェースのオブジェクトリファレンスを獲得します。
  CosNaming::Name_ptr           name; 
  CosNaming::NameComponent_var  *name_component; 
  CORBA::Object_ptr
        obj = orb->resolve_initial_references( CORBA_ORB_ObjectId_NameService, env ); 
  CosNaming::NamingContext_ptr
        NamingContext_obj = CosNaming::NamingContext::_narrow( obj ); 
  CORBA::release( obj ); 
  name_component = CosNaming::Name::allocbuf(1); 
  name_component[0]->id = (const CORBA::Char *)"ODsample::factory";
  name_component[0]->kind = (const CORBA::Char *)"";
  name = new CosNaming::Name(1, 1, name_component,CORBA_TRUE); 
  obj = NamingContext_obj->resolve( *name, env ); 
  CORBA::release( NamingContext_obj ); 
  delete name;(2) Factoryインタフェースに実装したメソッドの呼び出し
ネーミングサービスより獲得したオブジェクトリファレンスを使用してcreate_objメソッドを呼び出します。OD_impl_instコマンドでサーバアプリケーションをインプリメンテーションリポジトリに登録する場合、定義ファイル(“OD_impl_inst -ax”)で “iswitch=ON” を指定すると、メソッドの初回呼出し時にサーバアプリケーション内にクライアントごとのインスタンスデータが作成されます。
// インタフェース"intf1"のオブジェクトリファレンスの獲得 ODsample::factory_ptr ap = ODsample::factory::_narrow( obj ); ODsample::factory_var av = ap; ODsample::intf1_var target = av->create_obj( env );