使用 CORBA - org.omg.CORBA.BAD_PARAM 连接客户端(在 VirtualBox 上)和服务器(在 localhost 上):

Posted

技术标签:

【中文标题】使用 CORBA - org.omg.CORBA.BAD_PARAM 连接客户端(在 VirtualBox 上)和服务器(在 localhost 上):【英文标题】:Connecting client (on VirtualBox) and server (on localhost) using CORBA - org.omg.CORBA.BAD_PARAM: 【发布时间】:2012-10-16 22:57:40 【问题描述】:

我现在正在研究 Java/C++ 和 CORBA 中的简单 gui 应用程序。我希望 VirtualBox 上的客户端连接到本地主机上的服务器。当我有一个简单的应用程序时,比如我之前写过的一个 calc 就很好了。但是当涉及到运行需要一些 args 巫婆 javas -cp 选项的客户端时,我遇到了错误。 (当我在 localhost 上同时拥有客户端和服务器时,就没有这样的问题!) 我在 VirtualBox 上使用 Win XP,在 localhost 上使用 Ubuntu。

我的错误:

WARNING: "IOP00100007: (BAD_PARAM) string_to_object conversion failed due to bad
 scheme name"
org.omg.CORBA.BAD_PARAM:   vmcid: OMG  minor code: 7  completed: No
        at com.sun.corba.se.impl.logging.OMGSystemException.soBadSchemeName(Unkn
own Source)
        at com.sun.corba.se.impl.logging.OMGSystemException.soBadSchemeName(Unkn
own Source)
        at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(Unknown So
urce)
        at com.sun.corba.se.impl.resolver.ORBInitRefResolverImpl.resolve(Unknown
 Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(Unknown
Source)
        at ClientConnection.connect(ClientConnection.java:57)
        at Client.main(Client.java:295)

Exception in thread "main" org.omg.CORBA.BAD_PARAM:   vmcid: OMG  minor code: 7
 completed: No
        at com.sun.corba.se.impl.logging.OMGSystemException.soBadSchemeName(Unkn
own Source)
        at com.sun.corba.se.impl.logging.OMGSystemException.soBadSchemeName(Unkn
own Source)
        at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(Unknown So
urce)
        at com.sun.corba.se.impl.resolver.ORBInitRefResolverImpl.resolve(Unknown
 Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.resolver.CompositeResolverImpl.resolve(Unknown
Source)
        at com.sun.corba.se.impl.orb.ORBImpl.resolve_initial_references(Unknown
Source)
        at ClientConnection.connect(ClientConnection.java:57)
        at Client.main(Client.java:295)
make[1]: *** [run] Error 1

ClientConnection.java:57 是一行objRef = clientORB.resolve_initial_references("NameService"); Client.java:295 是一行:ClientConnection.connect(args);

connect 方法只是一个普通的客户端连接 corba 代码。

我运行了我的示例:

1) C:\Temp\Client>java -cp .:../Dir1:../Dir2 Client -ORBInitRef NameService =corbaloc::192.168.56.1:2809/NameService Error: Could not find or load main class Client 所以它甚至根本没有运行..

2) 在 Makefile 的帮助下:

HOST = 192.168.56.1
PORT = 2809
NAMESERVICE = NameService

run:
    java -cp .:../Dir1:../Dir2 Client -ORBInitRef NameService=corbaloc::$(HOST):$(PORT)/$(NAMESERVICE) 

输入make run 然后我得到了我之前发布的那些错误。怎么了?我的意思是,一个简单的代码可以正常工作,但 gui 版本不想...... -cp 选项有问题吗?我无法更改应用的目录树。

【问题讨论】:

只是一个猜测,但在 Windows 上,类路径中的项目应该用分号分隔,而不是冒号。在 Linux 上是冒号。 @GreyBeardedGeek :我用同样的结果改变了它...... :( Could not find or load main class Clinet 您是否在引用的消息中将其拼写为“Clinet”,或者您只是在评论中输入错误?无论哪种方式,设置类路径都会出错。 【参考方案1】:

我个人认为你有两个问题。

    类路径的东西。您是否在.Dir1Dir2 中有一个名为Client.class 的文件。如果没有,请查找它并将其添加到类路径中。如果在,请提供更多信息

    CORBA 的东西;我想看看你的Orb.init(); 电话。其他一切看起来都不错。

【讨论】:

以上是关于使用 CORBA - org.omg.CORBA.BAD_PARAM 连接客户端(在 VirtualBox 上)和服务器(在 localhost 上):的主要内容,如果未能解决你的问题,请参考以下文章

在 CORBA 程序中调用 createEntityManager 会导致异常:org.omg.CORBA.OBJECT_NOT_EXIST

如何解决 java 中的错误 org.omg.CORBA.BAD_OPERATION 异常?

org.omg.CORBA.MARSHAL:Valuetype 没有实现 StreamableValue 或 CustomMarshal

本地 JacORB 调用:org.omg.CORBA.OBJECT_NOT_EXIST

org.omg.CORBA.OBJECT_NOT_EXIST 尝试获取根命名上下文“NameService”时

尝试使用 corbaloc url 连接到 CORBA 服务