CORBA对象生命周期之早期和后期绑定

在伺服对象生命周期事件的定义中,已经说过伺服对象通过CORBA对象的ID依附于CORBA对象。下面会为BOA和POA代的ORB而分别讨论CORBA对象I D的概念,然而,伺服对象和CORBA对象之间的绑定的思想还是很重要的。对象适配器必须提供必需的接口,使我们能执行这种绑定。问题在于,是什么触发了真正的绑定:是某种标准应用程序逻辑还是来到的请求?下面首先介绍早期绑定,然后讨论后期绑定,或者说是通过命令的绑定。

1. 早期绑定

早期绑定通常描述的是某种标准应用程序逻辑通过对象适配器来执行绑定的情况。例如,一工厂对象可为创建新对象提供操作。这个操作的实现可创建一新的CORBA对象,并在返回新创建对象的引用之前激活一个伺服对象。因为CORBA对象现在是激活的-即存在对伺服对象的绑定-客户机现在可使用引用和激发新创建的CORBA对象。

2. 后期绑定

后期绑定意指绑定只能通过命令创建,即是在对象故障发生的情况下。如果在目标服务器的ORB运行时模块中所请求的目标对象和伺服对象之间不存在绑定,就会发生对象故障,即ORB不能为目标对象找出实现。

在对象故障的情况下, ORB可以要求应用程序提供一个伺服对象,以把这个伺服对象和目标对象绑定。如果应用程序不能完成这个请求, ORB就会引发异常以通知客户机被请求对象不存在。

创建后期绑定有两个选择:绑定只在请求期间被创建,或是绑定可以比请求生存得更久。在第一种情况中,下一个相同对象的请求会导致另一个对象故障,而第二种情况中绑定仍然存在(同时不需要任何动作来冻结伺服对象)。

图2显示了早期绑定和后期绑定的关系:基本上,早期绑定意味着应用程序采取主动。后期绑定意味着对象适配器请求应用程序提供一个伺服对象,以使绑定可以创建。这通常是通过伺服对象管理器来完成。伺服对象管理器是一个本地回调对象,由应用程序实现并注册到ORB,这样ORB在对象故障的情况下就可以激发它。

时间: 2024-09-19 11:51:18

CORBA对象生命周期之早期和后期绑定的相关文章

CORBA对象生命周期之生命周期的评估

评估准则 我们已经地讨论了CORBA对象的生命周期,包括生命周期事件,对早期和后期绑定的讨论,以及CORBA对象实现的一般分类.显然,用户希望ORB提供的应用程序能支持所有这些CORBA对象生命周期不同方面的有效实现.ORB通过对象适配器(OA)来提供这种支持.下面定义了一系列的评估准则,通过这些准则可对对象适配器进行涉及CORBA对象生命周期有效支持的分析.然后用户采纳这些不同的评估准则,并把它们应用到BOA和POA代的对象适配器中. ·适配器结构-- 最为重要的方面是适配器的一般结构. ·对

CORBA对象生命周期之生命周期事件

对于CORBA对象,以下两个生命周期事件是很重要的: ·创建--CORBA对象的生命周期从创建事件开始.CORBA对象通常通过工厂对象创建,即由对象提供操作来创建新对象.回忆一下,在IDL级,CORBA并没有像构造器这样的静态函数概念. ·删除--CORBA对象的生命周期伴随着删除事件而结束.通常, CORBA对象可在它们的IDL接口中定义某种Delet()操作来删除.有时候,可通过其他对象来删除CORBA对象,例如,通过创建这些对象的工厂对象. 由于前面说过CORBA对象实际是由伺服对象来实现

探索CORBA对象生命周期之CORBA对象

我们知道,POA规范定义CORBA对象为具有标识.接口和实现的抽象实体.从客户机的角度来看,对象表示为对象引用,对象引用封装了对象接口类型和标识,并包含足够的信息来定位对象的实现.但从服务器的角度来看又怎样呢? 1.伺服对象 POA规范引入了伺服对象(servant)的概念,使抽象的CORBA对象能和实现该对象功能的具体编程语言实体彻底分离.这样从服务器的角度来看, CORBA对象是作为伺服对象实现的.要记住CORBA是与编程语言独立的体系结构.伺服对象可实现为C++或Java类,也可以实现为一

CORBA对象生命周期_JSP编程

我们知道,POA规范定义CORBA对象为具有标识.接口和实现的抽象实体.从客户机的角度来看,对象表示为对象引用,对象引用封装了对象接口类型和标识,并包含足够的信息来定位对象的实现.但从服务器的角度来看又怎样呢? 1.伺服对象 POA规范引入了伺服对象(servant)的概念,使抽象的CORBA对象能和实现该对象功能的具体编程语言实体彻底分离.这样从服务器的角度来看, CORBA对象是作为伺服对象实现的.要记住CORBA是与编程语言独立的体系结构.伺服对象可实现为C++或Java类,也可以实现为一

CORBA对象生命周期之对象实现的分类

前面我们已经讨论过伺服对象和Corba对象的不同生命周期事件以及伺服对象和Corba对象之间绑定创建的不同方式,现在从应用程序的角度来研究Corba对象实现的分类.这会帮助我们在下面的对BOA代和POA代ORB对象生命周期的讨论中能把重点放在应用问题上. 1. 伺服对象和状态 第一个分类和伺服对象的状态相关.基本上可以划分两类完全不同的伺服对象:无状态伺服对象和有状态伺服对象. 2. 无状态伺服对象 无状态伺服对象与内存中任一特定应用程序的状态没有关联.这并不是指由伺服对象实现的Corba对象必

深入探索CORBA对象生命周期之慨述

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

CORBA对象生命周期之实现和内存管理

根据伺服对象的状态把它们进行分类后,现在基于内存管理来定义Corba对象的分类.显然,这个讨论和伺服对象的生命周期密切相关.这里侧重于分类,所以只是简单地讨论一下内存管理问题,并在下面引入一通用管理模式. 1. 静态Corba对象 静态对象是在系统整个生命时期中存在的Corba对象.通常,这些对象是组件入口点例如, Corba命名服务必须提供一根命名上下文,用来创建新的命名层次.这个根命名上下文可归类为静态的,因为它始终存在.从内存管理的角度来看,静态对象的实现是很简单的.通常,静态对象可通过在

CORBA对象生命周期之实现和内存管理_JSP编程

根据伺服对象的状态把它们进行分类后,现在基于内存管理来定义Corba对象的分类.显然,这个讨论和伺服对象的生命周期密切相关.这里侧重于分类,所以只是简单地讨论一下内存管理问题,并在下面引入一通用管理模式. 1. 静态Corba对象 静态对象是在系统整个生命时期中存在的Corba对象.通常,这些对象是组件入口点例如, Corba命名服务必须提供一根命名上下文,用来创建新的命名层次.这个根命名上下文可归类为静态的,因为它始终存在.从内存管理的角度来看,静态对象的实现是很简单的.通常,静态对象可通过在

我所理解的Remoting(2):远程对象生命周期的管理[上篇]

1.CLR的垃圾回收机制 在.NET中提到对象的生命周期,我们会不由自主地想到CLR的垃圾回收.在运行一个.NET程序过程中,我们通过某种方式,比如通过new操作符,通过反序列化,通过反射机制,创建一个对象,CLR在为这个对象在托管堆中开辟一块内存空间.随着程序的运行,创建的对象越来越多,托管堆中的可用的内存越来越少,必须有一种机制来判断被分配在托管堆中的对象那些已经不被使用,以及进行对这些对象占用的内存进行回收.这种机制被称为CLR自动内存管理,也就是我们常说的垃圾回收.为了说清楚远程对象的生