Module  java.rmi
软件包  java.rmi.activation

Interface Activator

  • All Superinterfaces:
    Remote


    public interface Activator
    extends Remote
    Activator有助于远程对象激活。 “故障”远程引用调用激活器的activate方法来获取对“可激活”远程对象的“实时”引用。 在接收到激活请求时,激活器查找激活标识符的激活描述符, id确定应激活对象的组,通过组ActivationInstantiator (通过调用newInstance方法)来启动对象重新创建。 激活器根据需要启动激活组的执行。 例如,如果特定组标识符的激活组尚未执行,则激活程序启动该组的VM的执行。

    ActivatorActivationSystem紧密合作,它提供了注册组和对象在这些组中的方法,以及ActivationMonitor ,它接收有关活动和非活动对象和非活动组的信息。

    激活器负责监视和检测激活组何时失败,以便它可以删除对这些组中的组和活动对象的陈旧的远程引用。

    从以下版本开始:
    1.2
    另请参见:
    ActivationInstantiatorActivationGroupDescActivationGroupID
    • 方法详细信息

      • activate

        MarshalledObject<? extends Remote> activate​(ActivationID id,
                                                    boolean force)
                                             throws ActivationException,
                                                    UnknownObjectException,
                                                    RemoteException
        激活与激活标识符相关联的对象, id 如果激活器知道该对象已经被激活,并且force为假,则具有“活动”引用的存根立即返回给调用者; 否则,如果激活器不知道对应的远程对象是活动的,则激活器使用激活描述符信息(先前注册的)来确定应该激活对象的组(VM)。 如果对象的组描述符对应的ActivationInstantiator已经存在,则激活程序将调用激活组的newInstance方法传递对象的id和描述符。

        如果对象的组描述符的激活组不存在,则激活器启动ActivationInstantiator执行(例如通过生成子进程)。 当激活器接收到激活组的回叫(通过ActivationSystemactiveGroup方法)指定激活组的引用时,激活器然后可以调用激活实例化器的newInstance方法将每个待处理的激活请求转发到激活组并返回结果(a编组的远程对象引用,存根)到调用者。

        请注意,激活程序接收“编组”对象而不是Remote对象,以便激活程序不需要加载该对象的代码,也可以参与该对象的分布式垃圾回收。 如果激活器保持对远程对象的强烈引用,则激活器将防止对象在正常分布式垃圾收集机制下被垃圾收集。

        参数
        id - 正在激活的对象的激活标识符
        force - 如果为真,则激活器接触组以获得远程对象的引用; 如果为false,则返回缓存值是允许的。
        结果
        远程对象(一个存根)以编组形式存在
        异常
        ActivationException - 如果对象激活失败
        UnknownObjectException - 如果对象未知(未注册)
        RemoteException - 如果远程调用失败
        从以下版本开始:
        1.2