Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

При вызове orb->resolve_initial_references возникает искл.


Bor ©   (2003-07-04 15:51:00) 

Доброе время суток, форумцы.
Подскажите плз. При вызове метода
  orb->resolve_initial_references возникает искл. CORBA_ORB_InvalidName.
И  что необходимо для того, чтобы клиент мог работать с NameService?
Спасибо


Bor   (2003-07-15 13:05:00) [1]

Уже разобрался.
Нужно было скормить ORB  еще одну настройку (для VisiBroker)
-ORBDefaultInitRef  iioploc://komp1.com:2809
Хотя ее назначение я пока так и не понял.


Bor   (2003-07-14 19:51:00) [2]

Без 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


epflorov   (2003-07-08 01:00:00) [3]

Покажите пожалуйста кусок кода от инициализации орба до вызова resolve_initial_references


Bor   (2003-07-07 18:17:00) [4]

Базара нет, пишу в инициализации Orb  -ORBInitRef  NameService=iiopname://что-то.com:2809/ (для VisiBroker) и все равно  выбивает ексеп. CORBA_ORB_InvalidName
:(


epflorov   (2003-07-06 01:35:00) [5]

1. orb->resolve_initial_references принимает в качестве параметра строку - название ссылки (NameService например).
Получив это название он идет в свою таблицу первоначальных ссылок и возвращает собственно ссылку с таким именем.
Такое исключение может выбрасываться, если в данной таблице нет ссылки с указанным именем.

2. Для того, что-бы указать первоначальные ссылки ORB'у есть несколько способов. Однако самым простым можно признать передачу ORB'у параметра ORBInitRef в командной строке, например для службы именования:

-ORBInitRef "NameService=corbaloc:iiop:213.128.193.46:9999/NameService"
Конечно в вашем случае она будет несколько иной :)

3. Для того, что бы можно было подключиться к службе именования из клиента необходимо:
- собственно запустить службу именования
- знать ip и порт который слушает служба именования
- перейти к пункту 2 (выше)
Если реализация службы именования более менее следует спецификации, то при запуске по-умолчанию она займет порт 2809


Наверх

Титульная страница Поиск, карта сайта Написать письмо