新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > JAVA > 正文:对两代不同的CORBA对象生命周期的慨述

对两代不同的CORBA对象生命周期的慨述

新客网 XKER.COM 2007-07-13 来源: dxaw 收藏本文

在服务器端,服务器的ORB在运行时从网络读取请求,并通过调用在第一个安装的消息拦截器上的receive_message( )开始处理请求。ORB用对象关键词以标识目标必须含有POA的名字,通过POA才能到达该对象。找到正确的POA后,下一步是寻找对象本身,这个工作如何完成取决于为对象的POA定义的策略。如果对象能够定位,ORB通过调用在第一个安装的请求拦截器上的target_invoke( )来继续处理请求,拦截器则使用DII函数invoke( )来依次继续处理请求,这在客户端中已经讨论过。这里假设只安装了一个请求拦截器,请求最后会被分派到目标对象的实现。

当对象完成处理请求后,消息拦截器的invoke( )调用返回,拦截器现在就有机会在返回到ORB运行时模块之前通过激发请求对象上的result( )来检验操作的结果。服务器端的最后一件事是ORB对服务器消息拦截器上的send_message( )的激发。在客户端,拦截器以类似的方式来处理:首先ORB调用消息拦截器上的receive_message( )方法,然后请求拦截器对invoke( )的阻塞调用返回,并使这些调用能检验请求的结果。最后,由客户机激发的在代理上的方法返回,向客户机提供结果。

POA规范第一版的问题在于很难决定生命周期中的事件的确切顺序,特别是在服务器端。例如,规范没有明确定义在服务器端的的哪个时段为特定的请求分配线程--很多线程策略要求在请求对象中提供的信息。另外,规范没有清楚规定POA和与请求拦截器有关的对象查找的顺序,所以在流程图中,这个顺序是基于它们的逻辑关系。

我们要识别两代不同的CORBA:BOA(基本对象适配器)代和POA(可移植对象适配器)代。这样区分将允许我们定义在核心ORB体系结构演变过程中两个重要的里程碑。

1、BOA代

CORBA体系结构的BOA代定义对象适配器是"应用程序用来访问ORB函数的主要接口..它包括..生成对象引用的接口,含有一个或多个程序的注册实现和激活实现所需的接口。"

要注意,当谈论到注册和激活实现时, BOA着重于CORBA服务器实现,而不是CORBA对象实现。BOA规范的一个主要不足就是它面对这样的问题时的不确定性。对于生成的服务器端框架缺少命名约定也是一个例证,这使得以遵循CORBA的方式来关联框架和对象实现变得不可能。本文使用IONA Technologies的Orbix 2.x的CORBA实现来作为ORB的BOA代的基准。

2、POA代

可移植对象适配器试图一方面克服最初BOA规范的不确定性,另一方面又为对象生命周期管理提供一整套的高级服务。

对POA本身的深入讨论可在Schmidt和Vinoski的书中找到,其中还提供了如下定义:"对象适配器是CORBA组件,负责使CORBA的对象概念能适应编程语言的伺服对象概念。"这个定义强调对实现的注册和激活从过程级转移到了对象级。对于对象生命周期, POA本身并不是在CORBA体系结构演变过程中唯一令人感兴趣的变化。其他令人感兴趣的新特征包括拦截器,它允许对激发生命周期,以及服务上下文( service context)的监控。服务上下文支持以标准的CORBA激发来发送额外的信息。尽管最后这两个特征和对象适配器的概念无关,我们仍然把它们纳入"POA代"定义中。这意味着本文对BOA和POA两代的观点节略了CORBA的详尽版本的历史,使用户能够侧重于概念。

从总体上看一下对象生命周期,然后再探讨BOA和POA两代ORB的细节。我们以应用程序而不是ORB的角度来看待对象生命周期,所以要首先看一下应用程序通常要求什么来有效地管理CORBA对象的生命周期。

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐