24.2.2 DynAnyの生成

DynAnyオブジェクトは,DynAnyFactoryオブジェクトでオペレーションを呼び出して生成します。まず,DynAnyFactoryオブジェクトのリファレンスを取得してから,そのオブジェクトを使用して新しいDynAnyオブジェクトを生成します。

コードサンプル24-1 DynAnyの生成(C++)

CORBA::Object_var obj =
     orb->resolve_initial_references("DynAnyFactory");
DynamicAny::DynAnyFactory_var factory =
     DynamicAny::DynAnyFactory::_narrow(obj);

// Create Dynamic struct
DynamicAny::DynAny_var dynany =
     factory->create_dyn_any_from_type_code(
           Printer::_tc_StructType);

DynamicAny::DynStruct_var info =
     DynamicAny::DynStruct::_narrow(dynany);

info->set_members(seq);

CORBA::Any_var any = info->to_any();

コードサンプル24-2 DynAnyの生成(Java)

// Resolve Dynamic Any Factory
  DynAnyFactory factory =
     DynAnyFactoryHelper.narrow(
           orb.resolve_initial_references("DynAnyFactory"));
     byte[ ] oid = "PrinterManager".getBytes();

// Create the printer manager object.
  PrinterManagerImpl manager =
    new PrinterManagerImpl((com.inprise.vbroker.CORBA.ORB)
                           orb, factory, serverPoa, oid);

// Export the newly create object.
  serverPoa.activate_object_with_id(oid, manager);
  System.out.println(manager + " is ready.");