在伺服对象生命周期事件的定义中,已经说过伺服对象通过CORBA对象的ID依附于CORBA对象。下面会为BOA和POA代的ORB而分别讨论CORBA对象I D的概念,然而,伺服对象和CORBA对象之间的绑定的思想还是很重要的。对象适配器必须提供必需的接口,使我们能执行这种绑定。问题在于,是什么触发了真正的绑定:是某种标准应用程序逻辑还是来到的请求?下面首先介绍早期绑定,然后讨论后期绑定,或者说是通过命令的绑定。
1. 早期绑定 早期绑定通常描述的是某种标准应用程序逻辑通过对象适配器来执行绑定的情况。例如,一工厂对象可为创建新对象提供操作。这个操作的实现可创建一新的CORBA对象,并在返回新创建对象的引用之前激活一个伺服对象。因为CORBA对象现在是激活的-即存在对伺服对象的绑定-客户机现在可使用引用和激发新创建的CORBA对象。
2. 后期绑定 后期绑定意指绑定只能通过命令创建,即是在对象故障发生的情况下。如果在目标服务器的ORB运行时模块中所请求的目标对象和伺服对象之间不存在绑定,就会发生对象故障,即ORB不能为目标对象找出实现。
在对象故障的情况下, ORB可以要求应用程序提供一个伺服对象,以把这个伺服对象和目标对象绑定。如果应用程序不能完成这个请求, ORB就会引发异常以通知客户机被请求对象不存在。
创建后期绑定有两个选择:绑定只在请求期间被创建,或是绑定可以比请求生存得更久。在第一种情况中,下一个相同对象的请求会导致另一个对象故障,而第二种情况中绑定仍然存在(同时不需要任何动作来冻结伺服对象)。
图2显示了早期绑定和后期绑定的关系:基本上,早期绑定意味着应用程序采取主动。后期绑定意味着对象适配器请求应用程序提供一个伺服对象,以使绑定可以创建。这通常是通过伺服对象管理器来完成。伺服对象管理器是一个本地回调对象,由应用程序实现并注册到ORB,这样ORB在对象故障的情况下就可以激发它。
查看本文来源