DynAnyオブジェクトは,DynAnyFactoryオブジェクトでオペレーションを呼び出して生成します。まず,DynAnyFactoryオブジェクトのリファレンスを取得してから,そのオブジェクトを使用して新しいDynAnyオブジェクトを生成します。
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();
// 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.");