Форум: "Corba";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизПри вызове orb->resolve_initial_references возникает искл. Найти похожие ветки
← →
Bor © (2003-07-04 15:51) [0]Доброе время суток, форумцы.
Подскажите плз. При вызове метода
orb->resolve_initial_references возникает искл. CORBA_ORB_InvalidName.
И что необходимо для того, чтобы клиент мог работать с NameService?
Спасибо
← →
epflorov © (2003-07-06 01:35) [1]1. orb->resolve_initial_references принимает в качестве параметра строку - название ссылки (NameService например).
Получив это название он идет в свою таблицу первоначальных ссылок и возвращает собственно ссылку с таким именем.
Такое исключение может выбрасываться, если в данной таблице нет ссылки с указанным именем.
2. Для того, что-бы указать первоначальные ссылки ORB"у есть несколько способов. Однако самым простым можно признать передачу ORB"у параметра ORBInitRef в командной строке, например для службы именования:
-ORBInitRef "NameService=corbaloc:iiop:213.128.193.46:9999/NameService"
Конечно в вашем случае она будет несколько иной :)
3. Для того, что бы можно было подключиться к службе именования из клиента необходимо:
- собственно запустить службу именования
- знать ip и порт который слушает служба именования
- перейти к пункту 2 (выше)
Если реализация службы именования более менее следует спецификации, то при запуске по-умолчанию она займет порт 2809
← →
Bor © (2003-07-07 18:17) [2]Базара нет, пишу в инициализации Orb -ORBInitRef NameService=iiopname://что-то.com:2809/ (для VisiBroker) и все равно выбивает ексеп. CORBA_ORB_InvalidName
:(
← →
epflorov © (2003-07-08 01:00) [3]Покажите пожалуйста кусок кода от инициализации орба до вызова resolve_initial_references
← →
Bor © (2003-07-14 19:51) [4]Без nameService все Ок. Иначе...
{
int n = 0;
char* c[] = {
{ "-ORBInitRef" }, { "NameService=iiopname://slava.komp1.com:2809/" },
NULL
};
for( n = 0; c[n]!= NULL; n++ );
try
{
orb = CORBA::ORB_init(n, c);
// Initialise the POA.
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA"); //см. ниже
poa = PortableServer::POA::_narrow(obj);
//orb->run();
pman = poa->the_POAManager();
pman->activate();
//orb->shutdown(true);
}
catch(...)
{
throw Exception("ORB_init error");
}
try {
// Get refereence on connect object
CosNaming::Name name;
name.length(3);
name[0].id = (const char*) "123"; // string copied
name[0].kind = (const char*) "Module"; // string copied
name[1].id = (const char*) "456"; // string copied
name[1].kind = (const char*) "Module"; // string copied
name[2].id = (const char*) "789"; // string copied
name[2].kind = (const char*) "Object"; // string copied
CORBA::Object_var obj = TCorbaCall::GetObjectReference(orb,name);
// дальше не идет. Описание функ. GetObjReference см. ниже
if (obj==CORBA::Object::_nil())
throw Exception("");
Orb->m_Admin_obj = Alpha::Admin::_narrow(obj);
}
//----------------------------------------
CORBA::Object_ptr TCorbaCall::GetObjectReference(CORBA::ORB_ptr orb,CosNaming::Name Name)
{
CosNaming::NamingContext_var rootContext;
try {
// Obtain a reference to the root context of the Name service:
CORBA::Object_var obj;
obj = orb->resolve_initial_references("NameService"); //вот здесь попа
// Narrow the reference returned.
rootContext = CosNaming::NamingContext::_narrow(obj);
if (CORBA::is_nil(rootContext))
{
// cerr << "Failed to narrow the root naming context.\n";
return CORBA::Object::_nil();
}
}
catch(CORBA::ORB::InvalidName&) {
// This should not happen!
// cerr << "Service required is invalid [does not exist].\n";
return CORBA::Object::_nil();
}
// Create a name object, containing the name test/context:
try {
// Resolve the name to an object reference.
return rootContext->resolve(Name);
}
catch(CosNaming::NamingContext::NotFound&) {
// This exception is thrown if any of the components of the
// path [contexts or the object] aren"t found:
throw Exception("Context not found.");
}
catch(CORBA::COMM_FAILURE&) {
throw Exception("Caught system exception COMM_FAILURE -- unable to contact the naming service.");
}
catch(CORBA::SystemException&) {
throw Exception("Caught a CORBA::SystemException while using the naming service.");
}
return CORBA::Object::_nil();
}
← →
Bor © (2003-07-15 13:05) [5]Уже разобрался.
Нужно было скормить ORB еще одну настройку (для VisiBroker)
-ORBDefaultInitRef iioploc://komp1.com:2809
Хотя ее назначение я пока так и не понял.
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.038 c