Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

При вызове 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 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1098214540
Tank Abot
2004-10-19 23:35
2004.11.07
sortirovka massivov metodom Shella


3-1097070131
Пуртик
2004-10-06 17:42
2004.11.07
Как ускорить закачку?


14-1098090763
blackman
2004-10-18 13:12
2004.11.07
Посмотрите пожалуйста видно ли сайт.


3-1097473238
Its
2004-10-11 09:40
2004.11.07
DBGrid


1-1098423661
denis24
2004-10-22 09:41
2004.11.07
разбивка строки на слова