1

我正在尝试运行我为订阅 CORBA 事件服务而编写的 Java 应用程序。它在我的 Windows 机器上运行良好,但是一旦我将它部署到 UNIX 服务器,它就会给我一个 org.omg.CORBA.NO_IMPLEMENT 异常。关于为什么会发生这种情况的任何想法?我在我的 Windows 机器上使用 JacORB 并传递 VM 参数来初始化客户端 ORB,但我不确定如何在 UNIX 上执行此操作,甚至是否有必要。

提前致谢!

4

3 回答 3

2

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 中执行此操作,请评论或改写问题。

于 2010-04-17T16:13:44.970 回答
0

org.omg.CORBA.NO_IMPLEMENTIMPLEMENT的 Javadoc :

此异常表明即使调用的操作存在(它具有 IDL 定义),也不存在该操作的实现。例如,如果客户端从接口存储库中请求对象的类型定义,但 ORB 没有提供接口存储库,则 NO_IMPLEMENT 可以由 ORB 引发。

它包含一个次要代码,它提供了有关导致异常的原因和完成状态的更详细信息。它还可能包含描述异常的字符串

所以我想你需要看看异常到底说了什么。我敢打赌,您需要添加这些 java 参数来初始化 ORB 客户端。

于 2010-04-17T10:39:34.947 回答
0

如果版本不同,可能是您没有注意到 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

如果这不是原因,请发布确切的版本

于 2010-04-17T10:40:09.797 回答