与TAO相关的随手贴

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 ());
}

你可能感兴趣的:(与TAO相关的随手贴)