CORBA版HelloWorld.docx

上传人:scccc 文档编号:13551378 上传时间:2022-01-15 格式:DOCX 页数:8 大小:43.80KB
返回 下载 相关 举报
CORBA版HelloWorld.docx_第1页
第1页 / 共8页
CORBA版HelloWorld.docx_第2页
第2页 / 共8页
CORBA版HelloWorld.docx_第3页
第3页 / 共8页
CORBA版HelloWorld.docx_第4页
第4页 / 共8页
CORBA版HelloWorld.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《CORBA版HelloWorld.docx》由会员分享,可在线阅读,更多相关《CORBA版HelloWorld.docx(8页珍藏版)》请在三一文库上搜索。

1、CORBA 版 HelloWorldCORBA学习报告CORBA是一个很古老的技术,甚至诞生于Java之前,不过随着WebService SOA RMI等等技术的出现,CORBA由于过于复杂而渐渐淡出了人们的视线,不过在一些交互性很强的系统异构 应用领域,CORBAT乎很重要,比如中国联通、移动、美国的数字电视系统应用领域,是CORBA把整个系统核心部分集成起来的。如果没有异构的、需要预留标准接口的、交互性很强的应用,你不应该考虑使用 COBRA下面是经过我的学习之后对CORB所做的简单总结:通用对象代理体系结构CORBA Com mon Object Request Broker Archi

2、tecture )是 对象管理组织 所定义的用来实现现今大量硬件、软件之间互操作的解决方案,CORBAT是迈向面向对象标准化和互操作的重要一步。CORBA技术简介简单地说,CORBA允许应用之间相互通信,而不管它们存在于哪里以及是谁设计的。CORBA1.1于1991年由0M既布,其中定义了接口定义语言(IDL)以及在对象请求代理(ORB中 实现客户对象与服务器对象之间交互的应用编程接口( API) oCORBA2.0于1994年发布,规定了各个供应商之间的ORB的通信规则。CORBAT准主要分为三个部分:接口定义语言(IDL)、对象请求代理(ORB以及ORB 之间的互操作协议HOPoORB是对

3、象之间建立Client/Server关系的中间件。使用ORB客户可以透明地调用一个服务对象 上的方法,这个服务对象可以在本地,也可以在通过网络连接的其他机器上。ORB截获这一调用同时负责查找实现服务的对象并向其传递参数、调用方法返回最终结果。客户并不知道服务对象位于什么地方,它的编程语言和操作系统是什么,也不知道不属于对象接口的其他系统部分。这样,ORB在异构分布环境下为不同机器上的应用提供了互操作性,并无缝地集成了多种对象系统。在开发传统的Clie nt/Server应用时,开发者使用他们自己设计的或一个公认的标准 来定义用于设备之间通信的协议。协议的定义依赖于实现语言、网络传输和许多其他因

4、 素,而ORB的出现简化了这一过程。使用 ORB时,协议是使用接口定义语言(IDL )定义的, 而IDL是独立于语言的。并且ORB提供很强的灵活性,它使程序员选择最适合的操作系统、 执行环境,甚至系统各个组件也可以采用不同的编程语言实现。更重要的是,它允许现有 组件的集成。在一个基于ORB勺解决方案中,开发者可以使用与创建新对象一样的IDL对遗留系统进行建模,他们创建“包装”代码以在标准化的软件总线与遗留系统接口之间传递信息。使用CORBA用户可以透明地访问信息,并不需要知道信息存在于什么软件中、使用什么硬件平 台,以及位于企业网络的什么地方。作为面向对象系统的通信核心,CORBA为今天的计算

5、环境带来了真正的互操作性。CORBA与JAVA的相互关系CORBA不只意味着对象请求代理(ORB,它还是非常全面的分布式对象平台。CORBA使JAVA应用可以跨越网络、语言以及操作系统,并为JAVA提供了一组分布服务,如分布式自我观察、动态发现、事务、关系、安全和命名等。JAVA不仅是一种语言,它还是一个动态代码系统,它对运行对象来说是一个可移植的虚拟机 (JVM。JAVA为开发、管理、发布Client/server应用提供了更简单的方式。人们可以通过将应用放在一个Web服务器上将这一应用发布给成千上万个用户,而不必关心它的安装和 升级。JAVA还非常适合服务器的开发,它可以动态地将服务代码移

6、向最需要它们的地方。JAVA将会使CORBA寸象能够运行在从主机、网络计算机到蜂窝电话等可编程的各种机器上, 并简化了大型CORBA系统的代码发布。对客户和服务对象来说JAVA是很理想的编程语言,JAVA内置的多线程、垃圾收集和错误处理使编写健壮的网络对象变得很容易。这两种对象模型可以很好地相互补充,CORBA处理网络的透明性,JAVA处理实现的透明性,CORBAT JAVA可移植应用环境提供了一个分布式的结构。下面是我经过阅读SUN的CORBA文档,所做的一个完整的HelloWorld实例:一、定义IDL没有IDL的专门的开发工具,写起来容易出错,而且不美观,IDEA勉强支持语法高亮,但不支

7、持格 式化和语法校验! 二、从IDL生成存根进入IDL文件存放目录,然后执行:idlj -fall Hello.idlH WIMDOWSD: ne wxJwlloCorbfiMrc d ir idl驱动器)中的卷是PRO 需的序列号是DPAFD: newhelloCopbaspc 的 目录.1节用1O字可1e 3 2H 1 31 23 2W9-12-W8 15:551人文件0 、目录 17.223D: Mie wShclloCorbaXsi*c IdlJ -fall He llo * idlD: neuhe 1 loCob&Xs 0会生成一批Java文件:helloCorbasrcHelloA

8、pp HelloPOA.java _HelloStub.java HelloHolder.java HelloHelper.java Hellojava HelloOperati on s.java三、实现IDL接口,开发服务端程序import HelloApp.Hello;import HelloApp.HelloHelper;import HelloApp.HelloPOA;import org.omg.CORBA.ORB;import org.omg.CosNami ng.NameComp onent;import org.omg.CosNami ng.Nami ngCon textEx

9、t;import org.omg.CosNam in g.Nam ingCon textExtHelper;import org.omg.PortableServer.POA;import org.omg.PortableServer.POAHelper;class Hellolmpl exte nds HelloPOA private ORB orb;CORBA 版 HelloWorld public void setORB(ORB orb_val) orb = orb_val;/ implement sayHello() method public Stri ng sayHello() r

10、eturn AnHello world !n,f;/ implement shutdown() methodpublic void shutdow n() orb.shutdow n( false);public class HelioServer public static void main(String args) try(创建一个ORB实例ORB 0rb = ORB.i ni t(args, n ull);得到一个RootPOA的引用,并激活POAManagerPOA rootpoa = POAHelper. narrow(orb.resolve i nitial refere nce

11、s(RootP OA);rootpoa.the POAMa nager().activate();/ create servant and register it with the ORB创建一个Hellolmpl实例(servant ),并注册到ORB上 Hellolmpl hellolmpl = new Hellolmpl();hellolmpl.setORB(orb);从服务中得到对象的引用org.omg.CORBA.Object ref = rootpoa.serva nt to refere nce(hellolmpl);Hello href = HelloHelper. narro

12、w(ref);得到一个根名称的上下文org.omg.CORBA.Object objRef = orb.resolven itial_refere nces(HNameS ervice); Use NamingContextExt which is part of the Interoperable Naming Service (INS) specification.NamingCon textExt n cRef = Nami ngCon textExtHelper. narrow(objRef);在命名上下文中绑定这个对象Stri ng n ame = Hello”;CORBA 版 He

13、lloWorldNameComp onent path = n cRef.to_ name (n ame); n cRef.reb in d(path, href);System.out.println(nHelloServerready and waiting );启动线程服务,等待客户端的调用orb.run();catch (Exception e) System.err.pri ntln( ERROR: + e);e.pri ntStackTrace(System.out);)System.out.pri ntln (HelloServerExiti ng)四、实现CORBA的客户端im

14、port HelloApp.Hello;import HelloApp.HelloHelper;import org.omg.CORBA.ORB;import org.omg.CosNami ng.Nami ngCon textExt;import org.omg.CosNami ng.Nami ngCon textExtHelper;public class HelloClie nt static Hello hellolmpl;public static void main(Stringargs口)try 创建一个ORB实例ORB orb = ORB.i ni t(args, n ull)

15、;获取根名称上卜文org.omg.CORBA.Object objRef = orb.resolve j n itial ref ere nces(HNameS ervice11); Use NamingCon textExt in stead of Nami ngCon text. This is/ part of the Interoperable naming Service.NamingCon textExt n cRef = Nami ngCon textExtHelper. narrow(objRef);从命名上下文中获取接口实现对象Stri ng n ame = Hello,;h

16、ellolmpl = HelloHelper. narrow( ncRef.resolve str( name);System.out.println(HObtained a handle on server object: + hellolmpl);System.out.pri ntl n( hellolmpl.sayHello();hellolmpl.shutdow n();调用接口对象的方法 catch (Exception e) System.out.pri ntl n( ERROR :” + e);e.pri ntStackTrace(System.out);)五、运行1)运行COR

17、BA服务orbd -ORBInitialPort 1050 -ORBInitialHost 192.168.14.1172)运行CORBA应用的服务端java HelioServer -ORBI ni tialPort 1050输出:HelloServer ready and waiting .HelloServer Exit ing .3)运行CORBA应用的客户端java HelloClie nt -ORBI ni tialHost 192.168.14.117 -ORBI nitialPort 1050Obtained a handle on server object: IOR:0001749444c3a48656c6c6f4170702f48656c 6c6f3a312e3000008a0000f3139322e3136382e31342e3db1afabcbd3bb88526f6f74504f4 10000020002Hello world !

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1