JavaTM 2 Platform
Standard Ed. 6

java.rmi.activation
类 Activatable

java.lang.Object
  继承者 java.rmi.server.RemoteObject
      继承者 java.rmi.server.RemoteServer
          继承者 java.rmi.activation.Activatable
所有已实现的接口:
Serializable, Remote

public abstract class Activatable
extends RemoteServer

Activatable 类为那些需要进行持久访问并能由系统激活的远程对象提供支持。

对于构造方法和静态 exportObject 方法,可以像 UnicastRemoteObject 中所描述的那样获得将被导出的远程对象的 stub。

试图显式序列化此类的实例将失败。

从以下版本开始:
1.2

字段摘要
 
从类 java.rmi.server.RemoteObject 继承的字段
ref
 
构造方法摘要
protected Activatable(ActivationID id, int port)
          构造方法用于在指定端口上激活/导出对象。
protected Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          构造方法用于在指定端口上激活/导出对象。
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port)
          构造一个可激活的远程对象:注册此对象的激活描述符(使用指定的位置、数据和重启模式),并使用指定的端口输出该对象。
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          构造一个可激活远程对象:注册此对象的激活描述符(使用指定的位置、数据和重启模式),并使用指定的端口、指定的客户端和服务器套接字工厂输出该对象。
 
方法摘要
static Remote exportObject(Remote obj, ActivationID id, int port)
          将可激活远程对象导出到 RMI 运行库中,使该对象能接收传入的调用。
static Remote exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          将可激活远程对象导出到 RMI 运行库中,使该对象能接收传入的调用。
static ActivationID exportObject(Remote obj, String location, MarshalledObject<?> data, boolean restart, int port)
          注册指定对象的激活描述符(使用指定的位置、数据和重启模式),并使用指定的端口输出该对象。
static ActivationID exportObject(Remote obj, String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
          注册指定对象的激活描述符(使用指定的位置、数据和重启模式),并使用指定的端口、指定的客户端和服务器套接字工厂输出该对象。
protected  ActivationID getID()
          返回对象的激活标识符。
static boolean inactive(ActivationID id)
          通知系统具有相应激活 id 的对象目前没有处于活动状态的。
static Remote register(ActivationDesc desc)
          为可激活远程对象注册一个对象描述符,以便可以根据需要激活它。
static boolean unexportObject(Remote obj, boolean force)
          从 RMI 运行库中移除远程对象 obj。
static void unregister(ActivationID id)
          为与 id 关联的激活描述符撤消前面的注册。
 
从类 java.rmi.server.RemoteServer 继承的方法
getClientHost, getLog, setLog
 
从类 java.rmi.server.RemoteObject 继承的方法
equals, getRef, hashCode, toString, toStub
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

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 运行库。
从以下版本开始:
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 - param port 导出对象的端口(如果 port=0,则使用匿名端口)
csf - 进行远程对象调用的客户端套接字工厂
ssf - 接收远程调用的服务器端套接字工厂
抛出:
ActivationException - 如果注册失败。
RemoteException - 如果下列操作之一失败:a) 通过激活系统注册对象 b) 将对象导出到 RMI 运行库。
从以下版本开始:
1.2

Activatable

protected Activatable(ActivationID id,
                      int port)
               throws RemoteException
构造方法用于在指定端口上激活/导出对象。一个“可激活的”远程对象必须具有带两个参数的构造方法:

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

参数:
id - 对象的激活标识符
port - 导出对象的端口的端口号
抛出:
RemoteException - 如果将对象导出到 RMI 运行库中失败
从以下版本开始:
1.2

Activatable

protected Activatable(ActivationID id,
                      int port,
                      RMIClientSocketFactory csf,
                      RMIServerSocketFactory ssf)
               throws RemoteException
构造方法用于在指定端口上激活/导出对象。一个“可激活的”远程对象必须具有带两个参数的构造方法:

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

参数:
id - 对象的激活标识符
port - 导出对象的端口的端口号
csf - 进行远程对象调用的客户端套接字工厂
ssf - 接收远程调用的服务器端套接字工厂
抛出:
RemoteException - 如果将对象导出到 RMI 运行库中失败
从以下版本开始:
1.2
方法详细信息

getID

protected ActivationID getID()
返回对象的激活标识符。此方法是受保护的,因此只有子类能获取对象的标识符。

返回:
对象的激活标识符
从以下版本开始:
1.2

register

public static Remote register(ActivationDesc desc)
                       throws UnknownGroupException,
                              ActivationException,
                              RemoteException
为可激活远程对象注册一个对象描述符,以便可以根据需要激活它。

参数:
desc - 对象的描述符
返回:
可激活远程对象的 stub
抛出:
UnknownGroupException - 如果 desc 中的组 id 未使用激活系统注册
ActivationException - 如果激活系统未运行
RemoteException - 如果远程调用失败
从以下版本开始:
1.2

inactive

public static boolean inactive(ActivationID id)
                        throws UnknownObjectException,
                               ActivationException,
                               RemoteException
通知系统具有相应激活 id 的对象目前没有处于活动状态的。如果对象当前处于活动状态的,则该对象从 RMI 运行库“取消导出”(仅在没有任何挂起或者进程内调用时),使其无法再接收传入的调用。此调用通知此 VM 的 ActivationGroup,告诉它对象处于不活动状态,并依次通知其 ActivationMonitor。如果成功完成此调用,则对激活器的后续激活请求将导致对象被重新激活。如果对象被认为是活动的,但是其自身已经取消导出,此操作仍能获得成功。

参数:
id - 对象的激活标识符
返回:
如果操作成功(如果已知对象目前处于活动状态并且已经取消导出,或者对象目前已被导出并且没有任何正在挂起/执行的调用,则此操作能够获得成功),则返回 true;否则,如果对象具有正在挂起/执行的调用,无法对其取消激活,则返回 false
抛出:
UnknownObjectException - 如果对象未知(可能已经处于不活动状态)
ActivationException - 如果组处于不活动状态
RemoteException - 如果调用通知监视器失败
从以下版本开始:
1.2

unregister

public static void unregister(ActivationID id)
                       throws UnknownObjectException,
                              ActivationException,
                              RemoteException
为与 id 关联的激活描述符撤消前面的注册。无法再通过该 id 激活对象。

参数:
id - 对象的激活标识符
抛出:
UnknownObjectException - 如果对象(id)未知
ActivationException - 如果激活系统未运行
RemoteException - 如果对激活系统的远程调用失败
从以下版本开始:
1.2

exportObject

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

注:建议最好使用此方法(以及同时注册和输出可激活远程对象的 Activatable 构造方法),因为 保证注册和输出远程对象操作是原子操作。相反,应用程序应该分开注册激活描述符和输出远程对象操作,这样才能正确地处理异常。

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

参数:
obj - 将被导出的对象
location - 对象的代码基
data - 对象的引导数据
restart - 如果该参数为 true,那么在一次意外崩溃之后,如果重启激活器或者重启对象激活组,则该对象也会被重启(激活);如果该参数为 false,则只能根据需要激活该对象。指定 restarttrue,不强制对新注册的对象立即进行初始激活操作;初始激活是延后进行的。
port - 导出对象的端口的端口号(如果 port=0,则使用匿名端口)
返回:
通过激活系统注册描述符 desc 所获得的激活标识符
抛出:
ActivationException - 如果激活组处于不活动状态
RemoteException - 如果对象注册或者导出失败
从以下版本开始:
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 方法来获取激活系统。然后,此方法通过使用 ActivationDesc 调用激活系统的 registerObject 方法来获取 ActivationID,其中,ActivationDesc 是使用指定对象的类名称、指定位置、数据和重启模式构造的。如果在获取激活系统或注册激活描述符时发生异常,则将向调用者抛出该异常。

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

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

参数:
obj - 将被导出的对象
location - 对象的代码基
data - 对象的引导数据
restart - 如果该参数为 true,那么在一次意外崩溃之后,如果重启激活器或者重启对象激活组,则该对象也会被重启(激活);如果该参数为 false,则只能根据需要激活该对象。指定 restarttrue,不强制对新注册的对象立即进行初始激活操作;初始激活是延后进行的。
port - 导出对象的端口的端口号(如果 port=0,则使用匿名端口)
csf - 进行远程对象调用的客户端套接字工厂
ssf - 接收远程调用的服务器端套接字工厂
返回:
通过向激活系统注册描述符所获得的激活标识符
抛出:
ActivationException - 如果激活组处于不活动状态
RemoteException - 如果对象注册或者导出失败
从以下版本开始:
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,则使用匿名端口)
返回:
可激活远程对象的 stub
抛出:
RemoteException - 如果对象导出失败
从以下版本开始:
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 - 接收远程调用的服务器端套接字工厂
返回:
可激活远程对象的 stub
抛出:
RemoteException - 如果对象导出失败
从以下版本开始:
1.2

unexportObject

public static boolean unexportObject(Remote obj,
                                     boolean force)
                              throws NoSuchObjectException
从 RMI 运行库中移除远程对象 obj。如果成功,该对象无法再接受传入的 RMI 调用。如果 force 参数为 true,那么即使存在挂起的远程对象调用,或者远程对象在进程中仍有调用,对象也会被强制取消导出。如果 force 为 false,则仅当不存在挂起或者进程内调用时,才取消导出对象。

参数:
obj - 要取消导出的远程对象
force - 如果该参数为 true,则即使存在挂起或者进程内调用,仍取消导出对象;如果该参数为 false,则仅当不存在挂起或者进程内调用时,才取消导出对象
返回:
如果操作成功,则返回 true;否则返回 false
抛出:
NoSuchObjectException - 如果远程对象目前没有被导出
从以下版本开始:
1.2

JavaTM 2 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策