resolve_initial_references导致SystemException

时间:2013-05-22 15:30:16

标签: c++ corba vc6 omniorb

我们在我们的客户端中使用ActiveX控件,在我们的应用程序中使用Visual C ++ 6.0开发。我们还使用 omniORB 2.7 来提供与服务器应用的连接。它一直很好;但是现在我们需要在Windows 7,64位PC上运行这个应用程序。 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

我认为它没有连接问题;因为ORB的init()函数没有问题。我也不认为超过了允许的连接数量;这没有意义。它只是说NO_RESOURCES。我试图打印minor代码;但它空洞了。我还能做什么?

修改:我使用以下代码启动服务器应用程序:-ORBInitialHost 192.168.1.8 -ORBInitialPort 900 -BOAiiop_port 5140

1 个答案:

答案 0 :(得分:1)

听起来您的客户端无法找到名称服务的初始引用。检查如何将此信息提供给客户端,即omniORB配置文件,环境变量,命令行参数或注册表(在Windows上)。