public abstract class Activatable extends RemoteServer
Activatable
类为需要持续访问的远程对象提供支持,并可由系统激活。
对于构造函数和静态exportObject
方法,可以按照UnicastRemoteObject
中的描述获取要导出的远程对象的存根。
明确序列化此类的实例的尝试将失败。
ref
Modifier | Constructor and Description |
---|---|
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)
通过为该对象注册激活描述符(具有指定的位置,数据和重新启动模式)来构造可激活的远程对象,并导出具有指定端口的对象以及指定的客户端和服务器套接字工厂。
|
Modifier and Type | Method and Description |
---|---|
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 没有激活对象id的对象。
|
static Remote |
register(ActivationDesc desc)
注册可激活的远程对象的对象描述符,以便可以按需激活。
|
static boolean |
unexportObject(Remote obj, boolean force)
从RMI运行时中删除远程对象obj。
|
static void |
unregister(ActivationID id)
撤销与id相关联的激活描述符的
id 。
|
getClientHost, getLog, setLog
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port) throws ActivationException, RemoteException
注意: Activatable
鼓励使用Activatable
注册和导出可激活远程对象的Activatable
函数,因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。
此方法使用该对象调用exportObject
方法,以及指定的位置,数据,重新启动模式和端口。 对后续调用getID()
将返回从调用返回的激活标识符exportObject
。
location
- 此对象的类的位置
data
- 对象的初始化数据
port
- 导出对象的端口(如果port = 0,则使用匿名端口)
restart
- 如果为true,当启动程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活);
如果是虚假的,对象只能按需激活。
指定restart
为true
不强制初始立即激活新注册的对象;
初始激活是懒惰的。
ActivationException
- 如果对象注册失败。
RemoteException
- 如果以下任何一种失败:a)使用激活系统注册对象,或b)将对象导出到RMI运行时。
UnsupportedOperationException
- 当且仅当此实现不支持激活时。
protected Activatable(String location, MarshalledObject<?> data, boolean restart, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws ActivationException, RemoteException
注意: Activatable
鼓励使用Activatable
注册和导出可激活远程对象的Activatable
函数,因为注册和导出远程对象的操作不能保证是原子的。 相反,应用程序应该注册激活描述符并分别导出远程对象,以便正常处理异常。
此方法调用exportObject
方法与此对象,并且指定的位置,数据,重启模式,端口和客户端和服务器套接字工厂。 对后续调用getID()
将返回从调用返回的激活标识符exportObject
。
location
- 此对象的类的位置
data
- 对象的初始化数据
restart
- 如果为true,当激活程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活);
如果是虚假的,对象只能按需激活。
指定restart
为true
不强制初始立即激活新注册的对象;
初始激活是懒惰的。
port
- 导出对象的端口(如果端口= 0,则使用匿名端口)
csf
- 用于调用远程对象的客户端套接字工厂
ssf
- 用于接收远程呼叫的服务器端套接字工厂
ActivationException
- 如果对象注册失败。
RemoteException
- 如果以下任何一种失败:a)使用激活系统注册对象,或b)将对象导出到RMI运行时。
UnsupportedOperationException
- 当且仅当此实现不支持激活时。
protected Activatable(ActivationID id, int port) throws RemoteException
ActivationID
)和 MarshalledObject
)。 当通过上述两个参数的构造激活这个类的一个具体的子类必须调用此构造。 作为构建的副作用,远程对象“导出”到RMI运行时(在指定的port
),并且可用于接受来自客户端的来电。
id
- 对象的激活标识符
port
- 导出对象的端口号
RemoteException
- 如果将对象导出到RMI运行时失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
protected Activatable(ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException
ActivationID
)和 MarshalledObject
)。 当通过上述两个参数的构造激活这个类的一个具体的子类必须调用此构造。 作为构造的副作用,将远程对象“导出”到RMI运行时(在指定的port
),并可用于接受来自客户端的来电。
id
- 对象的激活标识符
port
- 导出对象的端口号
csf
- 用于调用远程对象的客户端套接字工厂
ssf
- 用于接收远程呼叫的服务器端套接字工厂
RemoteException
- 如果将对象导出到RMI运行时失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
protected ActivationID getID()
public static Remote register(ActivationDesc desc) throws UnknownGroupException, ActivationException, RemoteException
desc
- 对象的描述符
UnknownGroupException
- 如果
desc
中的组ID未注册到激活系统
ActivationException
- 如果激活系统未运行
RemoteException
- 如果远程调用失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
public static boolean inactive(ActivationID id) throws UnknownObjectException, ActivationException, RemoteException
id
当前不活动。
如果对象当前处于活动状态,则对象将从RMI运行时“取消导出”(仅当没有挂起或正在进行的呼叫时),因此该对象将无法再接收来电。
此呼叫通知该虚拟机的ActivationGroup对象处于非活动状态,反过来通知其ActivationMonitor。
如果此调用成功完成,对激活程序的后续激活请求将导致对象重新激活。
如果该对象被认为是活动的,但已经自身已经取消导出,操作可能仍然会成功。
id
- 对象的激活标识符
UnknownObjectException
- 如果对象不知道(它可能已经处于非活动状态)
ActivationException
- 如果组不活动
RemoteException
- 如果呼叫通知监视器失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
public static void unregister(ActivationID id) throws UnknownObjectException, ActivationException, RemoteException
id
。
一个对象不能通过那个id
。
id
- 对象的激活标识符
UnknownObjectException
- 如果对象(
id
)未知
ActivationException
- 如果激活系统未运行
RemoteException
- 如果远程调用激活系统失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
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,当启动程序重新启动或对象的激活组在意外崩溃后重新启动时,对象将重新启动(重新激活);
如果是虚假的,对象只能按需激活。
指定restart
为true
不强制初始立即激活新注册的对象;
初始激活是懒惰的。
port
- 导出对象的端口(如果port = 0,则使用匿名端口)
desc
与激活系统错误的组
ActivationException
- 如果激活组未激活
RemoteException
- 如果对象注册或导出失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
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,则当激活程序重新启动或者在意外崩溃后重新启动对象的激活组时,对象将重新启动(重新激活);
如果是虚假的,对象只能按需激活。
将restart restart
为true
不会强制初始立即激活新注册的对象;
初始激活是懒惰的。
port
- 导出对象的端口(如果port = 0,则使用匿名端口)
csf
- 用于调用远程对象的客户端套接字工厂
ssf
- 用于接收远程调用的服务器端套接字工厂
ActivationException
- 如果激活组未激活
RemoteException
- 如果对象注册或导出失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
public static Remote exportObject(Remote obj, ActivationID id, int port) throws RemoteException
port
为零,则对象将导出在匿名端口上。
在激活期间,这个exportObject
方法应该被一个“可激活的”对象显式调用,而不是扩展Activatable
类。 不需要扩展Activatable
类的对象直接调用此方法,因为在构造期间导出对象。
obj
- 远程对象实现
id
- 对象的激活标识符
port
- 导出对象的端口(如果端口= 0,则使用匿名端口)
RemoteException
- 如果对象导出失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
public static Remote exportObject(Remote obj, ActivationID id, int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException
port
为零,则对象将导出在匿名端口上。
在激活期间,这个exportObject
方法应该被一个“可激活的”对象明确地调用,不会扩展Activatable
类。 不需要扩展Activatable
类的对象直接调用此方法,因为在构造过程中导出对象。
obj
- 远程对象实现
id
- 对象的激活标识符
port
- 导出对象的端口(如果port = 0,则使用匿名端口)
csf
- 用于拨打远程对象的客户端套接字工厂
ssf
- 用于接收远程调用的服务器端套接字工厂
RemoteException
- 如果对象导出失败
UnsupportedOperationException
- 当且仅当此实现不支持激活时
public static boolean unexportObject(Remote obj, boolean force) throws NoSuchObjectException
obj
- 要取消导出的远程对象
force
- 如果为true,即使有待处理或正在进行的调用,也可以取消运行对象;
如果为false,则只有在没有待处理或正在进行的调用时,才会取消对象的输出
NoSuchObjectException
- 如果远程对象当前未导出
UnsupportedOperationException
- 当且仅当此实现不支持激活时