1、创建ORB、poa、poa_manager对象
CORBA::ORB_var orb = init_orb_with_naming_service(argc,argv);
CORBA::Object_var poa_object =
orb->resolve_initial_references ("RootPOA");
PortableServer::POA_var poa =
PortableServer::POA::_narrow (poa_object.in ());
PortableServer::POAManager_var poa_manager =
poa->the_POAManager ();
poa_manager->activate ();
TAO_ORB_Manager orb_manager(orb.in(),poa.in(),poa_manager.in());
如果一切都采用默认的话,可以直接用TAO_ORB_Manager这个类协助创建。
2、创建对象并注册服务
CORBA::Object_var naming_context_object =
orb->resolve_initial_references (¡±NameService¡±);
CosNaming::NamingContext_var naming_context =
CosNaming::NamingContext::_narrow (naming_context_object.in ());
CosNaming::Name name (1);
///创建对象
slib_ChannelFactory_i channelFactory_i(poa.in(),poa_manager.in());
///用默认poa激活
::slib::ChannelFactory_var channelFactory=channelFactory_i._this();
name.length (1);
name[0].id = CORBA::string_dup (”myFactory”);
std::cout try{
naming_context->bind (name, channelFactory.in ());
}catch(CosNaming::NamingContext::AlreadyBound& ex){
naming_context->rebind (name, channelFactory.in ());
}
CORBA服务注册与对象创建
2484

被折叠的 条评论
为什么被折叠?



