如何从 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.ORBInitialPortorg.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