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

Class Activatable

  • 实现的所有接口
    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 - 导出对象的端口(如果port = 0,则使用匿名端口)
        restart - 如果为true,则在重新启动激活器或在意外崩溃后重新启动对象的激活组时,将重新启动(重新激活)对象; 如果为false,则仅在需要时激活对象。 指定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,则在重新启动激活器或在意外崩溃后重新启动对象的激活组时,将重新启动(重新激活)对象; 如果为false,则仅在需要时激活对象。 指定restarttrue不会强制新登记对象的初始立即激活; 初始激活是懒惰的。
        port - 导出对象的端口(如果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运行时“取消导出”(仅当没有挂起或正在进行的调用时),以便它无法再接收传入呼叫。 此调用通知此VM的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构造函数),因为注册和导出远程对象的操作保证是原子操作。 相反,应用程序应该注册激活描述符并单独导出远程对象,以便可以正确处理异常。

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

        参数
        obj - 正在导出的对象
        location - 对象的代码位置
        data - 对象的引导数据
        restart - 如果为true,则在重新启动激活器或在意外崩溃后重新启动对象的激活组时重新启动(重新激活)对象; 如果为false,则仅在需要时激活对象。 指定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构造函数),因为注册和导出远程对象的操作保证是原子操作。 相反,应用程序应该注册激活描述符并单独导出远程对象,以便可以正确处理异常。

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

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

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

        参数
        obj - 正在导出的对象
        location - 对象的代码位置
        data - 对象的引导数据
        restart - 如果为true,则在重新启动激活器或在意外崩溃后重新启动对象的激活组时,将重新启动(重新激活)对象; 如果为false,则仅在需要时激活对象。 指定restarttrue不会强制新登记对象的初始立即激活; 初始激活是懒惰的。
        port - 导出对象的端口(如果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