java - 尝试获取根命名上下文时出现 org.omg.CORBA.OBJECT_NOT_EXIST "NameService"

标签 java jakarta-ee corba omniorb

我正在尝试创建一个使用 CORBA 进行交互的 java 客户端/服务器应用程序。我关注了this example并能够使用“Java IDL 对象请求代理守护进程 orbd”使其工作。但是当我将服务器更改为指向我们本地的omniNames安装而不是orbd时,我收到此错误:

C:\Hello>java HelloServer -ORBInitialPort 7000 -ORBInitialHost 192.168.1.5
ERROR: org.omg.CORBA.OBJECT_NOT_EXIST:   vmcid: OMG  minor code: 1  completed: No
org.omg.CORBA.OBJECT_NOT_EXIST:   vmcid: OMG  minor code: 1  completed: No
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at java.lang.Class.newInstance0(Class.java:355)
        at java.lang.Class.newInstance(Class.java:308)
        at com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getSystemException(MessageBase.java:897)
        at com.sun.corba.se.impl.protocol.giopmsgheaders.ReplyMessage_1_0.getSystemException(ReplyMessage_1_0.java:94)
        at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.getSystemExceptionReply(CorbaMessageMediatorImpl.java:572)
        at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.processResponse(CorbaClientRequestDispatcherImpl.java:452)
        at com.sun.corba.se.impl.protocol.CorbaClientRequestDispatcherImpl.marshalingComplete(CorbaClientRequestDispatcherImpl.java:339)
        at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)
        at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.invoke(BootstrapResolverImpl.java:89)
        at com.sun.corba.se.impl.resolver.BootstrapResolverImpl.resolve(BootstrapResolverImpl.java:107)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.java:22)
        at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(ORBImpl.java:1151)
        at HelloServer.main(HelloServer.java:51)
HelloServer Exiting ...

导致错误的行:

org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");

就omniNames服务器而言,我知道它的安装和配置正确,因为我们有无数其他应用程序已经在使用它(c++)。我查看了这些其他应用程序的源代码,它们似乎在做同样的事情:

tmpRef = moOrb->resolve_initial_references("NameService");

我知道这不是网络错误,因为如果我使用错误的端口,则会出现无连接错误。我已经束手无策了,有什么想法吗?

最佳答案

问题最终出现在我的 java 服务器和 CORBA 服务器之间。我使用omniNames作为CORBA服务器(omniOrbs的一部分)。显然java有一个非标准的 Bootstrap ,默认情况下与omniNames不兼容。要启用对 java bootstrap 的支持,可以使用omniNames 参数启动:

'-ORBsupportBootstrapAgent 1'

添加后一切正常。 More can be read here.

关于java - 尝试获取根命名上下文时出现 org.omg.CORBA.OBJECT_NOT_EXIST "NameService",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581572/

相关文章:

Java - 处理大文件

java - 过滤器还是什么? -- 进入Spring应用程序之前检查文件

java - 调用 ORB.string_to_object 时 ORB.getPresentationManager 中出现 NullPointerException

java - 使用 CORBA 连接客户端(在 VirtualBox 上)和服务器(在本地主机上)- org.omg.CORBA.BAD_PARAM :

java - 将数组或序列传递给 idl Java Corba 中的函数

java - Android - 通过 POST 方法轻松发送 HTTP 参数

java - 为什么log4j输出到stdout?

java - 使用 JAXB 解码 XML 时跳过 XML 节点

java - Google App Engine - 死锁?

eclipse - 如何使用 eclipse 和 gradle 创建 Java EE 7 应用程序?