我正在尝试运行我为订阅 CORBA 事件服务而编写的 Java 应用程序。它在我的 Windows 机器上运行良好,但是一旦我将它部署到 UNIX 服务器,它就会给我一个 org.omg.CORBA.NO_IMPLEMENT 异常。关于为什么会发生这种情况的任何想法?我在我的 Windows 机器上使用 JacORB 并传递 VM 参数来初始化客户端 ORB,但我不确定如何在 UNIX 上执行此操作,甚至是否有必要。
提前致谢!
JRE 带有完整的 Corba 实现,您需要告诉它忽略这些并改用 JacOrb。
在 Unix 上:
-Xbootclasspath:${JACORB_HOME}/lib/jacorb.jar:${JAVA_HOME}/jre/lib/rt.jar:${CLASSPATH}
-Dorg.omg.CORBA.ORBClass=org.jacorb.orb.ORB
-Dorg.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
查找JacORB 的文档, 它解释得很好。您需要安装 jars 文件,并且需要指向传入 JVM 的 ior 或名称服务。
如果您的问题是如何在 shell 中执行此操作,请评论或改写问题。
org.omg.CORBA.NO_IMPLEMENTIMPLEMENT的 Javadoc :
此异常表明即使调用的操作存在(它具有 IDL 定义),也不存在该操作的实现。例如,如果客户端从接口存储库中请求对象的类型定义,但 ORB 没有提供接口存储库,则 NO_IMPLEMENT 可以由 ORB 引发。
它包含一个次要代码,它提供了有关导致异常的原因和完成状态的更详细信息。它还可能包含描述异常的字符串
所以我想你需要看看异常到底说了什么。我敢打赌,您需要添加这些 java 参数来初始化 ORB 客户端。
如果版本不同,可能是您没有注意到 JacORB 1.3.21 中软件包名称的变化,名称已从 jacorb 更改为org .jacorb
org.omg.CORBA.ORBClass=jacorb.orb.ORB
org.omg.CORBA.ORBSingletonClass=jacorb.orb.ORBSingleton
对此:
org.omg.CORBA.ORBClass=org.jacorb.orb.ORB
org.omg.CORBA.ORBSingletonClass=org.jacorb.orb.ORBSingleton
如果这不是原因,请发布确切的版本