Използваме ActiveX контрола в нашия клиент, разработена с Visual C++ 6.0, в нашето приложение. Ние също използваме omniORB 2.7, за да осигурим връзка със сървърното приложение. Работи добре; но точно сега трябва да стартираме това приложение на 64-битов компютър с Windows 7. ActiveX контролата работи; но в C++ кода, когато извиква функцията resolve_initial_references
на ORB, както е показано по-долу:
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()
на ORB работи без проблем. Също така не мисля, че разрешеният брой връзки е надвишен; това няма смисъл. Просто пише NO_RESOURCES. Опитах се да отпечатам кода minor
; но излиза празен. Какво друго мога да направя?
Редактиране: Стартирам сървърното приложение с тези: -ORBInitialHost 192.168.1.8 -ORBInitialPort 900 -BOAiiop_port 5140
InitRef
във вашия omniORB конфигурационен файл, напр.InitRef = NameService=corbaname::host1.example.com
. - person Brian Neal   schedule 22.05.2013