CORBA(orbd)网络配置?
Posted
技术标签:
【中文标题】CORBA(orbd)网络配置?【英文标题】:CORBA (orbd) networking configuration? 【发布时间】:2012-02-15 13:49:43 【问题描述】:我刚刚开始使用 CORBA。基本上,我必须实现一个充当 CORBA 客户端的 Java 应用程序。
此时,我主要使用 Sun JDK (JDK6) 工具,包括 idlj.exe(用于编译给我的 IDL)和 orbd.exe(用于测试我的代码),到目前为止,我'已经能够使用 idlj 和 IDL 来创建 Java 类,并且我还编写了一个测试服务器应用程序和测试客户端应用程序,它们现在都可以工作(我必须编写小型服务器应用程序,以便我可以测试我的客户端应用程序)。
如上所述,我使用 orbd.exe 作为 ORB 进行测试。
最初,我的 orbd.exe、我的 Java 服务器应用程序和我的 Java 客户端应用程序都在同一台机器上运行,并且工作正常。
我还在更分布式的配置中进行了测试,我在另一台机器 (testxp) 上运行 orbd.exe 和我的 Java 服务器应用程序,在另一台机器上运行我的 Java 客户端应用程序,并且可以正常工作。
我的问题如下:我看到的很多文档,网页等。 CORBA 的图表显示了两个 ORB,例如,一个服务器应用程序和一个 ORB 在一台机器上,一个客户端应用程序和另一个/第二个 ORB 在另一台/第二台机器上运行,两个 ORB 相互通信:
客户端应用 ==> ORB1 ----> ORB2 ==> 服务器应用
然而,到目前为止,在我的测试中,使用 orbd.exe 作为 ORB,我只使用了一个 ORB。
所以,我想知道如何配置如上所述的有两个 ORB 的测试配置?
我可以使用 orbd.exe 来做到这一点,还是 orbd.exe 在这种类型的配置中不起作用?
另外,如果使用 orbd.exe 可以做到这一点,我该怎么做?
谢谢, 吉姆
【问题讨论】:
【参考方案1】:CORBA 是一种用于在网络中通信应用程序的架构和基础架构。 ORB 是对 IIOP 的调用进行序列化(编组)和反序列化(解组)的组件。使用 CORBA,您可以用 C# 编写代码(使用 IIOP.NET)并用 Java 与服务器通信。
所以,你是对的,通信是在 ORB 之间进行的。
|客户端应用程序| ORB1 ORB2 |服务器应用|
ORBD 是一个带有命名服务器的 ORB。理想情况下,您只有一个名称服务,您可以阅读有关名称服务here 的信息。
最后,您可以通过多种方式开始 ORB 之间的通信。 (a) 在 POA 中激活仆人并调用方法 *poa.object_to_string(servant)*,将字符串写入文件,然后在客户端使用 *poa.string_to_object(fileAsString)* 将其读取。 (b) 定义服务器主机和端口并使用 corbaloc。 (c) 订阅名称服务器(最佳选择)。
尝试在您的测试中使用三个过程。命名服务器、客户端、服务器。
PS:我喜欢 JacORB 然后是 JDK Orb
编辑: 添加一些代码来帮助:
orb = org.omg.CORBA.ORB.init(args, props);
org.omg.CORBA.Object obj = this.orb.resolve_initial_references("RootPOA");
this.rootPOA = POAHelper.narrow(obj);
POAManager manager = this.rootPOA.the_POAManager();
manager.activate();
【讨论】:
以上是关于CORBA(orbd)网络配置?的主要内容,如果未能解决你的问题,请参考以下文章
将 CORBA orbd-Name 服务安装为 Windows 服务