Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.03 c
9-1089372152
Sewix
2004-07-09 15:22
2004.11.07
Требуется написать лаберинт. Типа Doom a без монстров


1-1097967106
ranetka
2004-10-17 02:51
2004.11.07
Диманический массив как поле класса


4-1096745572
Асякин
2004-10-02 23:32
2004.11.07
Загрузка DLL


1-1098863806
ызфт
2004-10-27 11:56
2004.11.07
Запутался в ООП


14-1098448210
Prohodil Mimo
2004-10-22 16:30
2004.11.07
При помощи какой переменной или функции можно узнать ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский