我刚开始和corba合作。基本上,我必须实现一个充当corba客户机的java应用程序。
现在,我主要使用sun jdk(jdk6)工具,包括idlj.exe(编译我得到的idl)和orbd.exe(测试我的代码),到目前为止,我已经能够使用idlj和idl创建java类,我还编写了一个测试服务器应用程序和一个测试客户端应用程序,它们都在工作(我必须编写一个小型服务器应用程序,这样我才能测试我的客户端应用程序)。
如上所述,我使用orbd.exe作为测试的orb。
最初,我有orbd.exe、我的java服务器应用程序和我的java客户端应用程序,它们都在同一台计算机上运行,这很有效。
我还测试了一个更分布式的配置,在另一台机器上运行orbd.exe和我的java服务器应用程序(testxp),在另一台机器上运行我的java客户端应用程序,这很有效。
我的问题是:我看到的许多文档、网页等都是重复的。CORBA的图表显示了两个ORB,例如,一台计算机上的服务器应用程序和ORB,以及运行在另一台/第二台计算机上的客户端应用程序和另一个/第二个ORB,两个ORB相互通信:
客户端应用程序==>ORB1--->ORB2==>服务器应用程序
然而,到目前为止,在我的测试中,使用orbd.exe作为orb,我只使用了一个orb。
所以,我想知道如何配置一个测试配置,其中有两个ORB,如上所述?
我可以用orbd.exe来做,还是orbd.exe在这种配置中不起作用?
另外,如果可以使用orbd.exe来完成,我该如何做?
谢谢,
吉姆
最佳答案
corba是一种在网络中实现应用程序通信的体系结构和基础设施。ORB是对IIOP调用进行序列化(封送)和反序列化(解封)的组件。使用corba,您可以用c(使用IIOP.NET)编写代码,并用java与服务器通信。
所以,你说得对,通讯是在球体之间进行的。
|客户端应用程序orb1orb2服务器应用程序|
orbd是一个带有命名服务器的orb。最好只有一个名称服务,您可以阅读有关名称服务here的信息。
最后,你有很多方法可以在球体之间开始通信。(a)激活poa中的servant并调用方法*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();