如何从 CORBA IOR 和 NamingContextExt 中提取服务器主机/IP? [爪哇]

Posted

技术标签:

【中文标题】如何从 CORBA IOR 和 NamingContextExt 中提取服务器主机/IP? [爪哇]【英文标题】:How to extract the server Host/IP from the CORBA IOR & NamingContextExt? [Java] 【发布时间】:2009-11-04 05:31:08 【问题描述】:

我有一个需要向服务器发送 UDP 数据包的客户端,而他对服务器的唯一引用是通过 CORBA 命名服务 (IOR)。我知道 IOR 已嵌入服务器信息,但有没有简单的方法可以提取它?

这是我目前的代码:

Object objRef = orb.resolve_initial_references("NameService");
NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);
Object o = ncRef.resolve_str(Name);

在此对象 o 包含 IOR 之后(如果我执行 o.toString(),它肯定看起来像一个有效的 IOR),所以我可以从中获取相应的服务器 IP/PORT,以便我可以向它发送一个 UDP包?

我知道这听起来很奇怪 - 为什么不直接调用远程方法,这是针对学校项目的,教授建议简单地存储另一个包含所有服务器信息的表 - 但我正在努力发挥创造力,因为我正在阅读关于 IOR,我想也许我可以用它做点什么……

任何帮助将不胜感激。 谢谢,

【问题讨论】:

【参考方案1】:

不确定它是否有帮助,但这是我用来访问 IBM CORBA 命名服务的属性,也许您可​​以尝试从您的对象中获取这些属性。

org.omg.CORBA.ORBInitialPort

org.omg.CORBA.ORBInitialHost

export ORB_PROPERTY="-DORBNamingProvider=CosNaming -Dorg.omg.CORBA.ORBClass=com.ibm.CORBA.iiop.ORB -Dorg.omg.CORBA.ORBInitialPort=$ORB_PORT -Dorg.omg.CORBA.ORBInitialHost =$ORB_HOST -Dcom.ibm.CORBA.Debug.Output=/dev/null"

【讨论】:

以上是关于如何从 CORBA IOR 和 NamingContextExt 中提取服务器主机/IP? [爪哇]的主要内容,如果未能解决你的问题,请参考以下文章

CORBA.MARSHAL:无法从底层网桥读取值:初始和转发的 IOR 不可访问 vmcid

CORBA - JacORB:使用固定端口生成 IOR?

CORBA 客户端有没有办法访问服务器 IOR 文件?

Corba IOR 解码

org.omg.CORBA.TRANSIENT:初始和转发的 IOR 不可访问 - 应用程序之间

CORBA.TRANSIENT 的考虑事项:初始和转发的 IOR 不可访问 vmcid:IBM 次要代码:E07 错误