В нашем приложении мы используем элемент управления 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
Похоже, у вашего клиента возникли проблемы с поиском начальной ссылки на службу имен. Проверьте, как вы передаете эту информацию клиенту, то есть конфигурационному файлу omniORB, переменной среды, аргументу командной строки или реестру (в Windows).
Других решений пока нет …