2012-02-15 88 views
3

我刚开始使用CORBA。基本上,我不得不实现一个充当CORBA客户端的Java应用程序。在这一点上,我主要使用Sun JDK(JDK6)工具,包括idlj.exe(编译我给出的IDL)和orbd.exe(用于测试我的代码),到目前为止,我已经能够使用idlj和IDL来创建Java类,并且我还编写了一个测试服务器应用程序和测试客户端应用程序,它们都在工作(我必须编写小型服务器应用程序,以便测试我的客户端应用)。CORBA(orbd)网络配置?

正如我上面所说,我使用orbd.exe作为测试的ORB。

起初,我有orbd.exe,我的Java服务器应用程序,和我的Java客户端应用程序,在同一台机器上所有正在运行,而工作。

我也更分散配置,其中我跑orbd.exe和另一台机器上(testxp)我的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之间进行的。

| client app | < ==> ORB1 < - (IIOP) - > ORB2 < ==> | server app |

ORBD是一个带有命名服务器的ORB。这是理想的,你只有一个名称服务,你可以阅读关于名称服务here

最后,您有很多方法可以开始ORB之间的通信。 (a)激活POA中的servant并调用方法* poa.object_to_string(servant)*,将该字符串写入文件,然后使用* poa.string_to_object(fileAsString)*在客户端中读取它。 (b)定义服务器主机和端口并使用corbaloc。 (c)在名称服务器(最佳选项)中订阅。

尝试在您的测试中使用三个过程。名称服务器,客户端,服务器。

PS:我喜欢JacORB然后JDK球

编辑: 添加一些代码,以帮助:

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();