【发布时间】:2016-06-24 15:39:25
【问题描述】:
诚然,我是 CORBA 和使用 ORB 的新手。我有一些代码安装在使用 TAO ORB 1.3 版的第 3 方机器上。当我的代码调用时:
String myObjectString = "IOR:010000002d00000049444c3a637573732e696174612e6f72672f436f6d706f6e656e74732f4d656469614f75747075743a312e3000000000030000000000000038000000010102000a0000006c6f63616c686f737400204e1b00000014010f00525354a90b6c57ea3c060002000000010000000300000000000000000000000038000000010102000a0000006c6f63616c686f737400214e1b00000014010f00525354a90b6c57ea3c060002000000010000000300000000000000000000000038000000010102000a0000006c6f63616c686f737400224e1b00000014010f00525354a90b6c57ea3c06000200000001000000030000000000000000";
ORB.string_to_object(myObjectString);
我得到一个例外:
java.lang.NullPointerException
at com.sun.corba.se.spi.orb.ORB.getPresentationManager(Unknown Source)
at com.sun.corba.se.spi.orb.ORB.getStubFactoryFactory(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_Object(Unknown Source)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_Object(Unknown Source)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.getIORFromString(Unknown Source)
at com.sun.corba.se.impl.resolver.INSURLOperationImpl.operate(Unknown Source)
at com.sun.corba.se.impl.orb.ORBImpl.string_to_object(Unknown Source)
at CussClient.enableMediaOutput(CussClient.java:1232)
at CussClient.ActivateComponents(CussClient.java:1879)
at CussClient.setApplicationState(CussClient.java:268)
at CussClient.HandleEvent(CussClient.java:2425)
at evtListenerImpl.callback(evtListenerImpl.java:31)
at types.evtListenerPOA._invoke(evtListenerPOA.java:49)
at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleInput(Unknown Source)
at com.sun.corba.se.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(Unknown Source)
at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequest(Unknown Source)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.dispatch(Unknown Source)
at com.sun.corba.se.impl.transport.SocketOrChannelConnectionImpl.doWork(Unknown Source)
at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.performWork(Unknown Source)
at com.sun.corba.se.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(Unknown Source)
同样的代码可以在运行其他 ORB 的其他 3rd 方机器上运行,所以我不确定这是 TAO ORB 的问题,还是其他问题。有没有 ORB 大师可以告诉我为什么会发生这种情况?
【问题讨论】:
-
使用 tao_catior 实用程序获取 IOR 并转储其内容可能会有所帮助。当你这样做时,你会看到 IOR 只包含 localhost 端点,这意味着它们只能在服务器运行的同一系统上使用,你这样做了吗?
-
看起来异常是从 Java 代码中抛出的,而不是 TAO
-
IOR 也不是由 TAO 生成的,您真的在设置中使用 TAO 吗?
-
@JohnnyWillemsen 我使用 IDL 文件来构建 java 类,我的 java 小程序使用它来引用在 3rd 方机器上运行的球体。机器的主人告诉我他们正在使用TAO。您如何确定 IOR 是从哪里生成的?我怎样才能得到这个 tao_catior 实用程序?我已经搜索过了,但似乎找不到任何可下载的脚本/可执行文件来在 IOR 上运行它。
-
当使用 TAO 生成 IOR 时,我希望标签 TAG_ORB_TYPE 不存在。 tao_catior 实用程序是 TAO 源的一部分,一种快速的方法是获取 TAOX11 的评估副本,它具有 tao_catior 的预编译版本,请参阅taox11.remedy.nl