2008-08-12 08:51:33 来源:e-works
由于CORBA与Web相结合带来的巨大优势,出现了很多种CORBA的Web使用技术。Java语言作为一门新兴的网络上的世界语,在短短的几年中取得了令人瞩目的成就,在Web开发上占举足轻重的地位。因此,Java迅速成为CORBA在WWW上的切入点。
一、 开发步骤
使用纯java语言进行web上的CORBA应用开发与C++的应用略有不同,其一般过程如下:
(1) 对所要实行的系统进行分析和对象建模,用接口定义语言(IDL)描述系统中各个对象的属性和对外接口;
(2) 考虑客户方采用什么样的调用策略。如果用静态调用,需将该系统的IDL描述文件通过IDL/Java编译器进行编译,生成相应的桩和构架文件。如果用动态调用,只需将IDL文件载入到接口库中;
(3) 使用纯Java语言实现系统中的各个对象;
(4) 编写服务器方主程序,其功能是创建服务方对象实现实例,并向Java—ORB注册,同时等待接受请求;
(5) 编写客户方Applet,其作用是获得服务器方对象引用,与用户进行交互,并根据用户指令向服务器方对象实现实例发出请求,并将结果返回给用户;
(6) 将客户方Applet和服务器方主程序与桩和构架文件等联编,并将该Applet嵌入到一个HTML页面中。
至此,用户通过浏览器浏览该页面,就可以调用服务器方对象实现操作了。
二、 简单WWW银行系统的开发
下面将按照上述过程,以Orbus for Java版为环境,采用静态调用的方式,开发一个基于CORBA的简单的WWW银行系统。
(1) 使用IDL语言对象对系统对象进行描述
该例子由两种主要对象组成:银行对象bank负责对账户对象account的管理,进行开户和销户操作;account对象有一个只读的属性balance,供用户查询余额,并提供存款和取款两种操作。此外,还定义了一个用户异常reject,在bank对象进行开户时发生账户名冲突或account对象进行提款操作时发现提款额超过余额时都会出现这个异常。该异常有一个字符串属性reason,用于描述异常产生的原因。
(2) 对上述bank.idl文件进行编译
根据IDL/java映射规定,除对每种IDL类型进行直接映射外,对每个用户定义的IDL数据类型,包括序列、数组、结构、枚举、联合、接口、异常等都将产生一个Helper类和一个Holder类,供桩和构架使用。其中,Helper类负责建立对象的标识,对对象进行CDR编解码操作。Holder类则在对象作为out或inout参数传递时使用。另外,对于每一个接口还将产生一个桩文件和一个构架文件。
(3) 服务器方对象的实现,包括account、bank两个对象的实现
从这一步开始,就进入了实质性的纯Java编程阶段。首先从服务器方入手,编写服务器方对象实现和主程序。服务器方对象实现的方式有两种:一种是继承方式,另一种是捆绑(Tie)的方式。前者是IDL/Java映射规范中所推荐的方式,具体的继承关系见图1。后者是IONA公司提出并在Orbix中首次实现。目前大多数CORBA系统都同时支持这两种方式。
图1 桩和构架类的继承关系
采用继承方式实现的服务器方对象,除了必须继承相应的桩类XImplBase以外,其实现部分与其下层的ORB系统完全无关,因而具有较好的可移植性,受到OMG的推荐。但是,由于Java语言不支持多继承,因此服务器方对象实现就不能再继承其他对象,特别是当服务器方对象之间存在继承关系时,子类无法重用父类的实现,造成编程上的一些困难。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。