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

Class Activatable

  • All Implemented Interfaces:
    SerializableRemote


    public abstract class Activatable
    extends RemoteServer
    Activatable类为需要持久访问的远程对象提供支持,并且可以由系统激活。

    对于构造函数和静态的exportObject方法,如UnicastRemoteObject所述,获取要导出的远程对象的存根。

    明确序列化此类的实例的尝试将失败。

    从以下版本开始:
    1.2
    • 构造方法详细信息

      • Activatable

        protected Activatable​(String location,
                              MarshalledObject<?> data,
                              boolean restart,
                              int port)
                       throws ActivationException,
                              RemoteException
        通过为该对象注册激活描述符(具有指定的位置,数据和重新启动模式)来构造可激活的远程对象,并使用指定的端口导出对象。

        注意:强烈建议不要使用注册和导出可激活远程对象的Activatable构造函数,因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。

        此方法使用此对象调用exportObject方法,以及指定的位置,数据,重新启动模式和端口。 getID()后续调用将返回从呼叫返回的激活标识为exportObject

        参数
        location - 此对象的类的位置
        data - 对象的初始化数据
        port - 导出对象的端口(如果端口= 0,则使用匿名端口)
        restart - 如果为true,则当激活程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活); 如果是虚假的,对象只能按需激活。 指定restarttrue不强制初始立即激活新注册的对象; 初始激活是懒惰的。
        异常
        ActivationException - 如果对象注册失败。
        RemoteException - 如果以下任何一种失败:a)使用激活系统注册对象,或b)将对象导出到RMI运行时。
        UnsupportedOperationException - 当且仅当此实现不支持激活时。
        从以下版本开始:
        1.2
      • Activatable

        protected Activatable​(String location,
                              MarshalledObject<?> data,
                              boolean restart,
                              int port,
                              RMIClientSocketFactory csf,
                              RMIServerSocketFactory ssf)
                       throws ActivationException,
                              RemoteException
        通过为该对象注册激活描述符(具有指定的位置,数据和重新启动模式)来构造可激活的远程对象,并导出具有指定端口的对象以及指定的客户端和服务器套接字工厂。

        注意:使用注册和导出可激活远程对象的Activatable构造函数是非常不鼓励的,因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。

        此方法使用此对象以及指定的位置,数据,重新启动模式,端口以及客户端和服务器套接字工厂调用exportObject方法。 getID()后续调用将返回从呼叫返回的激活标识为exportObject

        参数
        location - 此对象的类的位置
        data - 对象的初始化数据
        restart - 如果为true,则当激活程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活); 如果是虚假的,对象只能按需激活。 指定restarttrue不会强制新登记对象的初始立即激活; 初始激活是懒惰的。
        port - 导出对象的端口(如果端口= 0,则使用匿名端口)
        csf - 用于调用远程对象的客户端套接字工厂
        ssf - 用于接收远程调用的服务器端套接字工厂
        异常
        ActivationException - 如果对象注册失败。
        RemoteException - 如果以下任何一种失败:a)使用激活系统注册对象,或b)将对象导出到RMI运行时。
        UnsupportedOperationException - 当且仅当此实现不支持激活时。
        从以下版本开始:
        1.2
      • Activatable

        protected Activatable​(ActivationID id,
                              int port)
                       throws RemoteException
        用于在指定端口上激活/导出对象的构造方法。 一个“可激活的”远程对象必须具有一个构造函数,它需要两个参数:
        • 对象的激活标识符( ActivationID ),和
        • 对象的初始化数据(一个MarshalledObject )。

        当通过上述两个参数构造函数激活时,此类的具体子类必须调用此构造函数。 作为构造的副作用,远程对象“导出”到RMI运行时(在指定的port ),并且可用于接受来自客户端的来电。

        参数
        id - 对象的激活标识符
        port - 导出对象的端口号
        异常
        RemoteException - 如果将对象导出到RMI运行时失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • Activatable

        protected Activatable​(ActivationID id,
                              int port,
                              RMIClientSocketFactory csf,
                              RMIServerSocketFactory ssf)
                       throws RemoteException
        用于在指定端口上激活/导出对象的构造方法。 一个“可激活的”远程对象必须具有一个构造函数,它需要两个参数:
        • 对象的激活标识符( ActivationID )和
        • 对象的初始化数据(一个MarshalledObject )。

        当通过上述两个参数构造函数激活时,此类的具体子类必须调用此构造函数。 作为构造的副作用,远程对象“导出”到RMI运行时(在指定的port ),可用于接受来自客户端的来电。

        参数
        id - 对象的激活标识符
        port - 导出对象的端口号
        csf - 用于调用远程对象的客户端套接字工厂
        ssf - 用于接收远程调用的服务器端套接字工厂
        异常
        RemoteException - 如果将对象导出到RMI运行时失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
    • 方法详细信息

      • getID

        protected ActivationID getID​()
        返回对象的激活标识符。 该方法受到保护,因此只有子类可以获取对象的标识符。
        结果
        对象的激活标识符
        从以下版本开始:
        1.2
      • inactive

        public static boolean inactive​(ActivationID id)
                                throws UnknownObjectException,
                                       ActivationException,
                                       RemoteException
        通知系统当前激活的对象id当前处于非活动状态。 如果对象当前处于活动状态,则对象将从RMI运行时“取消导出”(仅当没有挂起或正在进行的呼叫时),因此该对象将无法再接收来电。 此呼叫通知该虚拟机的ActivationGroup对象处于非活动状态,反过来通知其ActivationMonitor。 如果此调用成功完成,对激活程序的后续激活请求将导致对象重新激活。 如果该对象被认为是活动的,但已经自身已经取消导出,操作可能仍然会成功。
        参数
        id - 对象的激活标识符
        结果
        如果操作成功,则为true(如果当前已知已激活的对象已被取消导出或当前导出并且没有待处理/执行调用,则操作将成功); 如果对象有挂起/执行的调用,则返回false,在这种情况下,它不能被禁用
        异常
        UnknownObjectException - 如果对象不知道(它可能已经处于非活动状态)
        ActivationException - 如果组不活动
        RemoteException - 如果呼叫通知监视器出现故障
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • exportObject

        public static ActivationID exportObject​(Remote obj,
                                                String location,
                                                MarshalledObject<?> data,
                                                boolean restart,
                                                int port)
                                         throws ActivationException,
                                                RemoteException
        为指定的对象注册激活描述符(具有指定的位置,数据和重新启动模式),并使用指定的端口导出该对象。

        注意: Activatable不鼓励使用此方法(以及注册和导出可激活的远程对象的Activatable构造函数),因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。

        此方法使用指定的对象,位置,数据,重新启动模式和端口调用exportObject方法,并为客户端和服务器套接字工厂null ,然后返回生成的激活标识符。

        参数
        obj - 要导出的对象
        location - 对象的代码位置
        data - 对象的引导数据
        restart - 如果为true,则当启动程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活); 如果是虚假的,对象只能按需激活。 指定restarttrue不会强制新登记对象的初始立即激活; 初始激活是懒惰的。
        port - 导出对象的端口(如果port = 0,则使用匿名端口)
        结果
        从注册描述符获得的激活标识符, desc与激活系统错误的组
        异常
        ActivationException - 如果激活组未激活
        RemoteException - 如果对象注册或导出失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • exportObject

        public static ActivationID exportObject​(Remote obj,
                                                String location,
                                                MarshalledObject<?> data,
                                                boolean restart,
                                                int port,
                                                RMIClientSocketFactory csf,
                                                RMIServerSocketFactory ssf)
                                         throws ActivationException,
                                                RemoteException
        注册指定对象的激活描述符(具有指定位置,数据和重新启动模式),并使用指定的端口以及指定的客户端和服务器套接字工厂导出该对象。

        注意: Activatable不鼓励使用此方法(以及注册和导出可激活的远程对象的Activatable构造函数),因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。

        该方法首先注册指定对象的激活描述符,如下所示。 它通过调用方法ActivationGroup.getSystem获得激活系统。 然后,此方法获得的ActivationID通过调用激活系统的用于物体registerObject与方法ActivationDesc与指定对象的类名构成,指定位置,数据和重启模式。 如果获取激活系统或注册激活描述符发生异常,该异常将被抛出给调用者。

        接下来,该方法通过调用具有指定远程对象的exportObject方法,从注册获取的激活标识符,指定的端口以及指定的客户端和服务器套接字工厂来导出对象。 如果导出对象发生异常,则此方法将通过使用激活标识符调用激活系统的unregisterObject方法来尝试注销激活标识符(从注册获取)。 如果异常发生取消注册标识符,该异常将被忽略,导出对象的原始异常被抛出到调用者。

        最后,此方法使用激活标识符和指定的远程对象调用此VM中的激活组上的activeObject方法,并将激活标识符返回给调用者。

        参数
        obj - 要导出的对象
        location - 对象的代码位置
        data - 对象的引导数据
        restart - 如果为true,当启动程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活); 如果是虚假的,对象只能按需激活。 指定restarttrue不会强制新登记对象的初始立即激活; 初始激活是懒惰的。
        port - 导出对象的端口(如果端口= 0,则使用匿名端口)
        csf - 用于调用远程对象的客户端套接字工厂
        ssf - 用于接收远程调用的服务器端套接字工厂
        结果
        从激活系统注册描述符获得的激活标识符
        异常
        ActivationException - 如果激活组未激活
        RemoteException - 如果对象注册或导出失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • exportObject

        public static Remote exportObject​(Remote obj,
                                          ActivationID id,
                                          int port)
                                   throws RemoteException
        将可激活的远程对象导出到RMI运行时间,使对象可用于接收来电。 如果port为零,则对象将导出在匿名端口上。

        在激活期间,此exportObject方法应由“可激活”对象显式调用,不会扩展Activatable类。 不需要扩展Activatable类的对象直接调用此方法,因为在构造期间导出对象。

        参数
        obj - 远程对象实现
        id - 对象的激活标识符
        port - 导出对象的端口(如果port = 0,则使用匿名端口)
        结果
        可激活的远程对象的存根
        异常
        RemoteException - 如果对象导出失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • exportObject

        public static Remote exportObject​(Remote obj,
                                          ActivationID id,
                                          int port,
                                          RMIClientSocketFactory csf,
                                          RMIServerSocketFactory ssf)
                                   throws RemoteException
        将可激活的远程对象导出到RMI运行时间,使对象可用于接收来电。 如果port为零,则对象将导出在匿名端口上。

        在激活期间,此exportObject方法应由“可激活”对象显式调用,不会扩展Activatable类。 不需要扩展Activatable类的对象直接调用此方法,因为在构造过程中导出对象。

        参数
        obj - 远程对象实现
        id - 对象的激活标识符
        port - 导出对象的端口(如果port = 0,则使用匿名端口)
        csf - 用于调用远程对象的客户端套接字工厂
        ssf - 用于接收远程调用的服务器端套接字工厂
        结果
        可激活的远程对象的存根
        异常
        RemoteException - 如果对象导出失败
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2
      • unexportObject

        public static boolean unexportObject​(Remote obj,
                                             boolean force)
                                      throws NoSuchObjectException
        从RMI运行时中删除远程对象obj。 如果成功,对象不能再接受传入的RMI调用。 如果force参数为true,即使有远程对象的挂起调用或远程对象仍在进行调用,该对象也被强制取消导出。 如果force参数为false,则只有当对象没有待处理或正在进行调用时,对象才会取消导出。
        参数
        obj - 要取消导出的远程对象
        force - 如果为true,即使有待处理或正在进行的调用,也会force对象; 如果为false,则只有在没有待处理或正在进行的调用时,才会取消对象的输出
        结果
        如果操作成功,则为true,否则为false
        异常
        NoSuchObjectException - 如果远程对象当前未导出
        UnsupportedOperationException - 当且仅当此实现不支持激活时
        从以下版本开始:
        1.2