Форум: "Corba";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Вниз2 интерфейса Найти похожие ветки
← →
paul_shmakov © (2002-03-17 05:38) [0]а второй интерфейс - это ITapiEventsImplementation чтоль? объекты первого интерфейса у вас определены как persistent. объекты второго интерфейса тоже должны быть долгоживущими? если да, то можно использовать один и тот же poa для объектов сервантов обоих типов. если нет, то нужно создать еще один poa для нового интерфейса.
ну а дальше регистрируем сервант в poa и все должно работать.
если а второй интерфейс - это все же ITapiEventsImplementation и объекты этого интерфейса дожны быть transient, а не persistent, то вот пример:
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var rootPOA = PortableServer::POA::_narrow(obj);
CORBA::PolicyList policies;
policies.length(1);
policies[(CORBA::ULong)0] = rootPOA->create_lifespan_policy(PortableServer::PERSISTENT);
// get the POA Manager
PortableServer::POAManager_var poa_manager = rootPOA->the_POAManager();
// Create myPOA with the right policies
clientPOA = rootPOA->create_POA("beltel_agent_poa", poa_manager, policies);
CORBA::PolicyList tapiPolicies;
tapiPolicies.length(0); // полиси по умолчанию
tapiPOA = rootPOA->create_POA("tapi_agent_poa", poa_manager, tapiPolicies);
// Create the servant
IAgentManagerImplementation clientServant;
ITapiEventsImplementation tapiServant;
// Decide on the ID for the servant
PortableServer::ObjectId_var managerId = PortableServer::string_to_ObjectId("BeltelAgent");
PortableServer::ObjectId_var tapiId = PortableServer::string_to_ObjectId("BeltelTapiAgent");
// Activate the servant with the ID on myPOA
clientPOA->activate_object_with_id(managerId, &clientServant);
tapiPOA->activate_object_with_id(tapiId, &tapiServant);
// Activate the POA Manager
poa_manager->activate();
CORBA::Object_var clientReference = clientPOA->servant_to_reference(&clientServant);
// ну и ссылку получаем
CORBA::Object_var tapiReference = tapiPOA->servant_to_reference(&tapiServant);
orb->run();
← →
paul_shmakov © (2002-03-17 06:23) [1]кстати, я не обратил внимания, но, если мне не изменяет память, то вы в полиси должны добавить id assignment policy равное user_id, так как самостоятельно указываете object id.
CORBA::PolicyList policies;
policies.length(2);
policies[0] = rootPOA->create_lifespan_policy(PortableServer::PERSISTENT);
policies[1] = rootPoa->create_id_assignment_policy(PortableServer::USER_ID);
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2004.07.04;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c