模块  java.rmi
软件包  java.rmi.activation

Interface Activator

  • All Superinterfaces:
    Remote

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

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

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

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

      • activate

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

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

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

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