2

在我们的应用程序中,我们在客户端中使用了使用 Visual C++ 6.0 开发的 ActiveX 控件。我们还使用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

4

1 回答 1

1

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

于 2013-05-23T13:05:31.823 回答