public interface Activator extends Remote
Activator
有助于远程对象激活。
一个“故障”远程引用调用激活器的activate
方法来获得对“可激活”远程对象的“实时”引用。
在接收到激活请求时,激活器查找激活标识符的激活描述id
,id确定对象应该被激活的组通过组ActivationInstantiator
(通过调用newInstance
方法)发起对象重新创建。
激活器根据需要启动激活组的执行。
例如,如果特定组标识符的激活组尚未执行,则激活程序启动该组的VM的执行。
Activator
与ActivationSystem
紧密合作,提供了注册组和对象在这些组内的方法,以及ActivationMonitor
,它们记录有关活动和非活动对象和非活动组的信息。
激活器负责监视和检测激活组何时失败,以便它可以删除对这些组中的组和活动对象的陈旧的远程引用。
ActivationInstantiator
, ActivationGroupDesc
, ActivationGroupID
Modifier and Type | Method and Description |
---|---|
MarshalledObject<? extends Remote> |
activate(ActivationID id, boolean force)
激活与激活标识符相关联的对象,
id 。
|
MarshalledObject<? extends Remote> activate(ActivationID id, boolean force) throws ActivationException, UnknownObjectException, RemoteException
id
。
如果激活器知道该对象已被激活,并且force
为false,则具有“实时”引用的存根立即返回给调用者;
否则,如果激活器不知道对应的远程对象是活动的,则激活器使用激活描述符信息(先前注册的)来确定应该激活对象的组(VM)。
如果ActivationInstantiator
对应于所述对象组描述符已经存在,则激活调用激活组的newInstance
方法传递给它的对象的id和描述符。
如果对象的组描述符的激活组不存在,则激活器启动执行(例如,通过产生子进程)执行一个ActivationInstantiator
。 当激活器接收到激活组的回叫(通过ActivationSystem
的activeGroup
方法)指定激活组的引用时,激活器可以调用该激活实例化器的newInstance
方法将每个待处理的激活请求转发到激活组并返回结果(a编组的远程对象引用,一个存根)给调用者。
请注意,激活程序接收“编组”对象而不是Remote对象,以便激活程序不需要加载该对象的代码,也可以参与该对象的分布式垃圾回收。 如果激活器保持对远程对象的强烈引用,则激活器将防止对象在正常分布式垃圾收集机制下被垃圾收集。
id
- 正在激活的对象的激活标识符
force
- 如果为真,则激活器接触组以获得远程对象的引用;
如果为false,则返回缓存值是允许的。
ActivationException
- 如果对象激活失败
UnknownObjectException
- 如果对象未知(未注册)
RemoteException
- 如果远程调用失败