- 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
中所述获取要导出的远程对象的存根。尝试显式序列化此类的实例将失败。
- 从以下版本开始:
- 1.2
-
-
字段汇总
-
声明的属性在类 java.rmi.server.RemoteObject
ref
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
Activatable(String location, MarshalledObject<?> data, boolean restart, int port)
通过为此对象注册激活描述符(具有指定的位置,数据和重新启动模式)并使用指定的端口导出对象来构造可激活的远程对象。protected
Activatable(String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
通过为此对象注册激活描述符(具有指定的位置,数据和重新启动模式),并使用指定的端口以及指定的客户端和服务器套接字工厂导出对象,构造可激活的远程对象。protected
Activatable(ActivationID id, int port)
用于激活/导出指定端口上的对象的构造函数。protected
Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
用于激活/导出指定端口上的对象的构造函数。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 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)
为指定对象注册激活描述符(具有指定的位置,数据和重新启动模式),并使用指定的端口以及指定的客户端和服务器套接字工厂导出该对象。static Remote
exportObject(Remote obj, ActivationID id, int port)
将可激活的远程对象导出到RMI运行时以使该对象可用于接收传入的调用。static Remote
exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf)
将可激活的远程对象导出到RMI运行时以使该对象可用于接收传入的调用。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
-
-
-
-
构造方法详细信息
-
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,则仅在需要时激活对象。 指定restart
为true
不会强制新登记对象的初始立即激活; 初始激活是懒惰的。 - 异常
-
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,则仅在需要时激活对象。 指定restart
为true
不会强制新登记对象的初始立即激活; 初始激活是懒惰的。 -
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
-
register
public static Remote register(ActivationDesc desc) throws UnknownGroupException, ActivationException, RemoteException
为可激活的远程对象注册对象描述符,以便可以按需激活。- 参数
-
desc
- 对象的描述符 - 结果
- 可激活远程对象的存根
- 异常
-
UnknownGroupException
- 如果未在激活系统中注册desc
组ID -
ActivationException
- 如果激活系统未运行 -
RemoteException
- 如果远程呼叫失败 -
UnsupportedOperationException
- 当且仅当此实现不支持激活时 - 从以下版本开始:
- 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
-
unregister
public static void unregister(ActivationID id) throws UnknownObjectException, ActivationException, RemoteException
撤消与id
关联的激活描述符的先前注册。 无法再通过id
激活对象。- 参数
-
id
- 对象的激活标识符 - 异常
-
UnknownObjectException
- 如果对象(id
)未知 -
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,则仅在需要时激活对象。 指定restart
为true
不会强制新登记对象的初始立即激活; 初始激活是懒惰的。 -
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,则仅在需要时激活对象。 指定restart
为true
不会强制新登记对象的初始立即激活; 初始激活是懒惰的。 -
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
-
-