分布式对象技术及其应用第五章精.ppt

上传人:石*** 文档编号:48327310 上传时间:2022-10-05 格式:PPT 页数:27 大小:957.50KB
返回 下载 相关 举报
分布式对象技术及其应用第五章精.ppt_第1页
第1页 / 共27页
分布式对象技术及其应用第五章精.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《分布式对象技术及其应用第五章精.ppt》由会员分享,可在线阅读,更多相关《分布式对象技术及其应用第五章精.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、分布式对象技术及其应用第五章第1页,本讲稿共27页在分布式对象系统中,所谓服务器是指实现分布式对象功能的程序,它是由两部分组成的:一是分布式对象实现部分,这部分是CORBA服务器的核心部分,用于实现IDL定义的接口的功能;二是服务器进程部分,这部分主要用于实现分布式对象的生成与登录,以及接受来自客户端的调用请求等。CORBA服务器是根据IDL接口定义来实现的。在CORBA服务器的实现过程中,需要利用IDL的Java语言映射结果。本章主要介绍CORBA服务器的实现过程,所利用的IDL接口及其映射结果与4.1节给出的例子相同。第2页,本讲稿共27页5.1CORBA服务器的构造CORBA服务器是指实

2、现分布式对象功能的程序。图5.1给出了CORBA服务器程序的基本构成。第3页,本讲稿共27页CORBA服务器程序的基本构成:ORB的初始化BOA/POA的初始化接收请求开始 图5.1 CORBA服务器的处理流程分布式对象的生成分布式对象的登录第4页,本讲稿共27页一种服务器程序的实现框架:public class ControlSerImplpublic static void main(String args)/args的检查处理try /ORB的初始化 org.omg.CORBA.ORB orb=org.omg.CORBA.ORB.init(args,null);/BOA的初始化 org.

3、omg.CORBA.BOA boa=orb.BOA_init();/分布式对象的生成 ControlImpl control=new ControlImpl(“BANK”);/分布式对象的登录(登录到BOA中)boa.obj_is_ready(control);/接收请求 boa.impl_is_ready();/循环等待catch(org.CORBA.SystemException system_exception)/异常处理第5页,本讲稿共27页5.2 对象适配器的作用5.2.1对象适配器的作用在客户端开发一章中已经提到过,ORB的初始化结束以后,就已经获得了ORB对象的引用,这样,就可以

4、使用ORB的功能了。在CORBA中,把ORB功能中的服务器所需要的功能都组织到被称为对象适配器OA(Object Adapter)的对象中来提供。这也就是说OA是ORB的一个组成部分,同时,由OA所提供的功能也仅在开发服务器程序时使用,而不用于开发客户端程序。第6页,本讲稿共27页由CORBA所提供的服务器的功能主要有如下几种,这些功能在不同的系统中所体现的方式可能是不同的,有的是分别提供的,有的是一个功能中包含多项:(1)分布式对象引用的生成;(2)分布式对象的登录与删除;(3)服务器进程的登录与删除;(4)分布式对象的激活;(5)服务器进程的激活;(6)方法调用请求的发送(dispatch

5、);(7)方法启动请求的认证信息的取出。第7页,本讲稿共27页5.2.2 BOA与POA由POA来取代BOA主要是基于以下的原因:(1)BOA描述模糊,服务器端程序难于移植;(2)由BOA所提供的功能难以满足对CORBA系统的开发。第8页,本讲稿共27页5.2.3 伪对象伪对象与普通的CORBA分布式对象的主要区别有如下几点:(1)不能将伪对象作为一般CORBA对象中操作的参数进行传递。(2)在接口仓库中没有伪对象的定义信息。第9页,本讲稿共27页5.3 BOA的功能由于BOA本身也是作为对象来实现的,因此,同ORB一样,为了利用其功能也必须要先获取其对象引用。为了获取BOA对象的引用,一般需

6、要首先获取ORB对象的引用,然后通过调研ORB对象中的方法来获取BOA对象的引用。在获取了BOA的对象引用之后,就可以利用BOA的功能来实现服务器的功能了。由于不同的CORBA产品对BOA的定义也是由差异的,因此,下面给出的只是BOA的一种定义形式,从中可以了解由BOA所提供的功能。第10页,本讲稿共27页Public abstract class org.omg.CORBA.BOA extends java.lang.Object/取出方法启动请求的认证信息public abstract org.omg.CORBA.principal get_principle(org.omg.CORBA.

7、Object obj);/分布式对象的登录public abstract void obj_is_ready(org.omg.CORBA.Object obj);public abstract void obj_is_ready(org.omg.CORBA.Object obj,);/分布式对象的删除public abstract void deactivate_obj(org.omg.CORBA.Object obj);/服务器进程的登录public abstract void impl_is_ready();public abstract void impl_is_ready();第11页

8、,本讲稿共27页5.4 分布式对象的实现所谓分布式对象的实现是指实现分布式对象功能的代码,对Java映射来讲,一般是用一个Java类来实现的。在分布式对象实现中必须要实现的功能主要包括如下几个:(1)由IDL接口定义的方法。(2)由org.omg.CORBA.Object接口所定义的分布式对象的语义。(3)保存分布式对象的ID以及连接(connection)管理等信息的方法。(4)将来自客户端的请求发送给相应的分布式方法的功能。第12页,本讲稿共27页5.4.1 Skeleton继承方式所谓Skeleton继承方式,就是通过直接继承Skeleton类来实现分布式对象实现。这种方式的特点是由对象

9、适配器(OA)来调用Skeleton类中的dispatch方法,而dispatch方法通过参数来接收来自客户端的调用请求。第13页,本讲稿共27页5.4.2 Skeleton类的构造在CORBA服务器程序设计过程中,由于Skeleton类的作用使得很多复杂的细节都被隐藏掉了,程序设计 人员可以集中精力来研究业务逻辑的实现问题,从表面上看,就如同实现本地对象一样来实现分布式对象。在上一章介绍了Stub类的结构,在本节将介绍Skeleton类的构成。由于CORBA系统不同,所生成的Skeleton类也可能是有差异的。第14页,本讲稿共27页5.4.3 Tie 机制方式通过继承Skeleton类来实

10、现分布式对象的方法,有一个问题,这就是由于在Java语言中只允许单一继承,也就是只允许有一个父类。如果在使用Skeleton继承方式时,分布式对象实现本身也需要通过继承其他类来实现的话,这种方式就难以实现了。为了解决这一问题,可以利用Tie机制方式,但这种做法使得分布式对象实现的构造变得复杂了。所谓Tie机制方式,也就是委托处理方式,这种方式的特点是通过委托处理来实现分布式对象,这样即使需要继承其他的类来实现分布式对象也是可行的。第15页,本讲稿共27页Tie类本身相当于前述的Skeleton继承方式中的分布式对象实现类,Tie类本身是通过继承Skeleton类实现的,而Tie类中的具体处理过

11、程则是利用Delegate类来完成的。在Tie机制方式中,为了实现一个分布式对象需要定义两个对象:一个是Tie对象,另一个是提供分布式对象中的方法实现的delegate对象,即委托对象,这两个对象是通过委托方式结合在一起的。第16页,本讲稿共27页1、Tie类的构造2、委托对象3、Tie机制方式的使用第17页,本讲稿共27页5.5 分布式对象的生成 所谓分布式对象的生成是指生成分布式对象实现的实例。在Java中,通常是利用new操作实现的。由于分布式对象实现的类是通过一系列继承的关系来实现的,因此在生成分布式对象实现的实例时,将要执行各自类的构造函数。在生成分布式对象时,一般来讲,要进行如下一

12、些操作:(1)对分布式对象服务部分的初始化。(2)对分布式对象语义部分的初始化。(3)与分布式对象的ID有关的信息设置。第18页,本讲稿共27页5.6 分布式对象的登录到目前为止,分布式对象已经生成并可以执行了。但是,现在还不能接收来自ORB的请求。对于ORB来讲,它还不认识这个对象。为了使ORB能够管理分布式对象,就需要将“已经生成新对象并处于接收请求的状态”这一信息通知ORB,这一通知的处理过程被称为分布式对象的登录。第19页,本讲稿共27页5.7 接收请求的开始分布式对象登录到BOA以后,就可以开始接收来自客户端的请求了,CORBA服务器的处理也就开始了。一般来讲,此时,就进入了等待请求

13、的循环之中了。如果这种循环因某种原因结束,也就是服务器进程结束的时候。在有的CORBA中,调用了impl_is _ready()方法后,就向BOA发出了“服务器的初始化已完成,可以进行启动方法的请求处理了”的通知,这时也就进入了接收请求的循环之中。因此,调用了impl_is _ready()方法以后,对请求的处理实际上也就开始了。第20页,本讲稿共27页到此为止,CORBA服务器的处理也就结束了。到目前为止,CORBA服务器的设计都是基于BOA来完成的,由于BOA的特点,使得不同系统在实现过程上存在较大差异,在BOA的获取、分布式对象的登录以及接受请求开始等函数调用方面都是有差异的。为了解决这

14、一问题,在CORBA2.2以后的版本中提供了POA。本章的后续部分将介绍POA的基本内容。第21页,本讲稿共27页5.8 POA基础POA为实现CORBA服务器提供了非常广阔的选择余地,如果理解了POA的功能,同时,选择了与应用程序特性相吻合的实现策略的话,就能够设计出可扩充性非常好的服务器程序.第22页,本讲稿共27页5.8.1 POA中的CORBA对象与Servant的关系 POA的主要功能是管理CORBA对象与Servant(服务对象)的生存周期,并将来自客户端的调用请求分发给相应的Servant.这里的Servant是指实现CORBA对象的Java的等程序设计语言中的对象.POA与BO

15、A的最大区别就在于将CORBA对象与Servant对象进行完全分离,这种分离提高了服务器应用的可扩展性.第23页,本讲稿共27页5.8.2 POA与策略应用程序开发者所采用的CORBA对象与Servant的映射方法、对象ID的分配方法、是使用持续对象还是使用瞬时对象等实现方法都是由POA策略来设定的。如果在程序中不设置POA策略的话,就是使用根POA,即rootPOA.第24页,本讲稿共27页5.8.3 POA与生成为了生成POA,首先需要生成策略对象(policy object)数组(或称序列)以保存相应的策略。这里,策略对象是通过调用在POA接口中为各个策略定义的”create_策略名”操

16、作来生成的。策略对象数组生成完了之后,以该数组为参数调用其父POA(比如根POA)的create_POA()操作来生成所需的POA。第25页,本讲稿共27页5.8.POA策略简介.POA策略一览表.Threadpolicy.LifespanPolicy.有关对象ID的策略.ServantRetentionPolicy.有关请求的处理方法的策略.有关对象的激活策略第26页,本讲稿共27页5.8.POA管理器POA管理器用于管理各POA对来自客户端的请求的处理流程。在一个POA管理器下可以创建多个POA.POA管理器根据其状态来决定如何处理来自客户端的请求,包括将请求加入队列中、分发给目标POA以及废弃请求等。第27页,本讲稿共27页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁