resol_initial_references вызывает исключение SystemException

В нашем приложении мы используем элемент управления ActiveX, разработанный на Visual C ++ 6.0. Мы также используем omniORB 2.7 обеспечить подключение к серверу приложения. Работает нормально; но сейчас нам нужно запустить это приложение на Windows 7, 64-битный ПК. Элемент управления ActiveX работает; но в коде C ++, когда он вызывает ORB resolve_initial_references функция как ниже:

try
{
// Obtain a reference to the root context of the Name service:
CORBA::Object_var initServ;
initServ = orb->resolve_initial_references("NameService");
}
catch(CORBA::ORB::InvalidName& ex)
{
FormAndOpenHataDialog("Service Required is Invalid [does not exist] !", __FILE__, __LINE__);
return CORBA::Object::_nil();
}
catch(CORBA::SystemException & ex)
{
FormAndOpenHataDialog(ex.NP_RepositoryId() , __FILE__, __LINE__);
return FALSE;
}

Выдает SystemException. Это не было сделано на XP, 32-битных машинах. Я пытался выяснить причину исключения; но все, что я мог выбраться, было NP_RepositoryId(); и это печатает: IDL: omg.org/CORBA/NO_RESOURCES.

Я не думаю, что у него есть проблема со связью; потому что ОРБ init() Функция работает без проблем. Я также не думаю, что допустимое количество соединений превышено; это не имеет смысла. Это просто говорит NO_RESOURCES. Я пытался напечатать minor код; но оно приходит пустым. Что еще я могу сделать?

Редактировать: Я запускаю серверное приложение с этими: -ORBInitialHost 192.168.1.8 -ORBInitialPort 900 -BOAiiop_port 5140

2

Решение

Похоже, у вашего клиента возникли проблемы с поиском начальной ссылки на службу имен. Проверьте, как вы передаете эту информацию клиенту, то есть конфигурационному файлу omniORB, переменной среды, аргументу командной строки или реестру (в Windows).

1

Другие решения

Других решений пока нет …