public abstract class ActivationGroup extends UnicastRemoteObject implements ActivationInstantiator
ActivationGroup是负责在其组创建“可激活的”对象的新实例,通知其ActivationMonitor当任:它的对象变成活动的或者不活动的,或基团作为整体变得不活动。
一个ActivationGroup以几种方式之一最初创建:
ActivationDesc而不是组中第一个可激活对象的显式ActivationGroupID ,或 ActivationGroup.createGroup方法 ActivationGroupDesc仅被注册的组中ActivationGroupDesc第一个对象的副作用。 只有激活者可以重新创建一个ActivationGroup 。 激活器根据需要生成一个单独的VM(例如,作为子进程),并将其指向相应的组。 实现具体如何产生虚拟机。 通过ActivationGroup.createGroup静态方法创建激活组。 createGroup方法对要创建的组有两个要求:1)组必须是ActivationGroup的具体子类,2)该组必须具有一个构造函数,该构造函数需要两个参数:
ActivationGroupID ,和 java.rmi.MarshalledObject ) 当创建的默认实现ActivationGroup将覆盖与性能的系统属性要求其当ActivationGroupDesc创建,并会设置一个SecurityManager作为默认的系统安全管理。 如果您的应用程序需要在组中激活对象时设置特定属性,则应用程序应创建一个包含这些属性的特殊Properties对象,然后创建一个ActivationGroupDesc与Properties对象,并在创建任何ActivationDesc之前使用ActivationGroup.createGroup ActivationGroupDesc被创建)。 如果您的应用程序需要使用除SecurityManager之外的安全管理员,则在ActivativationGroupDescriptor属性列表中,您可以将java.security.manager属性设置为要安装的安全管理器的名称。
ActivationInstantiator , ActivationGroupDesc , ActivationGroupID , Serialized Form
ref| Modifier | Constructor and Description |
|---|---|
protected |
ActivationGroup(ActivationGroupID groupID)
构造具有给定激活组标识符的激活组。
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
activeObject(ActivationID id, MarshalledObject<? extends Remote> mobj)
这个受保护的方法对于子类来说是必要的,以使组的监视器回调
activeObject 。
|
abstract void |
activeObject(ActivationID id, Remote obj)
当对象导出时(通过
Activatable对象构造或显式调用
Activatable.exportObject调用组的
activeObject方法。
|
static ActivationGroup |
createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation)
创建并设置当前虚拟机的激活组。
|
static ActivationGroupID |
currentGroupID()
返回当前激活组的标识符。
|
static ActivationSystem |
getSystem()
返回VM的激活系统。
|
protected void |
inactiveGroup()
这个受保护的方法对于子类来说是必要的,以使组的监视器回调
inactiveGroup 。
|
boolean |
inactiveObject(ActivationID id)
该组的
inactiveObject方法通过调用
Activatable.inactive方法
Activatable.inactive调用。
|
static void |
setSystem(ActivationSystem system)
设置VM的激活系统。
|
clone, exportObject, exportObject, exportObject, unexportObjectgetClientHost, getLog, setLogequals, getRef, hashCode, toString, toStubfinalize, getClass, notify, notifyAll, wait, wait, waitnewInstanceprotected ActivationGroup(ActivationGroupID groupID) throws RemoteException
java.rmi.server.UnicastRemoteObject 。
groupID - 组的标识符
RemoteException - 如果此组无法导出
UnsupportedOperationException - 当且仅当此实现不支持激活时
public boolean inactiveObject(ActivationID id) throws ActivationException, UnknownObjectException, RemoteException
inactiveObject方法通过调用Activatable.inactive方法Activatable.inactive调用。
远程对象实现必须调用Activatable的inactive方法,该对象取消激活(对象认为它不再有效)。
如果对象在Activatable.inactive时不调用Activatable.inactive ,则该对象永远不会被垃圾回收,因为该组对其创建的对象保持强烈引用。
该组的inactiveObject方法从RMI运行时取消导出远程对象,以使对象不再能够接收传入的RMI调用。 如果对象没有挂起或执行调用,对象将只会被取消导出。 ActivationGroup的子类必须覆盖此方法并取消导出该对象。
从RMI运行时中删除对象后,组必须通知其ActivationMonitor (通过监视器的inactiveObject方法)远程对象当前未处于活动状态,以便远程对象在后续激活请求时由激活程序重新激活。
该方法只是通知组的监视器对象是否处于非活动状态。 由ActivationGroup的具体子类来满足解除对象的附加要求。
id - 对象的激活标识符
UnknownObjectException - 如果对象未知(可能已处于非活动状态)
RemoteException - 如果呼叫通知监视器失败
ActivationException - 如果组不活动
public abstract void activeObject(ActivationID id, Remote obj) throws ActivationException, UnknownObjectException, RemoteException
Activatable对象构造或显式调用
Activatable.exportObject该组的
activeObject方法被调用。该组必须通知其
ActivationMonitor该对象是活动的(通过监视器的
activeObject方法),如果该组尚未完成所以。
id - 对象的标识符
obj - 远程对象实现
UnknownObjectException - 如果对象未注册
RemoteException - 如果呼叫通知监视器失败
ActivationException - 如果组不活动
public static ActivationGroup createGroup(ActivationGroupID id, ActivationGroupDesc desc, long incarnation) throws ActivationException
Activator启动重新创建激活组以便执行传入的activate请求时,使用createGroup方法设置激活组。
A组首先必须与所登记的ActivationSystem它可以通过这种方法来创建之前。
由指定的组类ActivationGroupDesc必须的具体子类ActivationGroup并具有公共构造两个参数: ActivationGroupID为组和MarshalledObject含有组的初始化数据(从所获得的ActivationGroupDesc 。
如果在指定的组类名ActivationGroupDesc是null ,则此方法将像组描述符包含默认激活组实现类的名称。
请注意,如果您的应用程序创建自己的自定义激活组,则必须为该组设置安全管理器。 否则在组中无法激活对象。 默认设置为SecurityManager 。
如果组VM中已经设置了安全管理器,则该方法首先调用安全管理器的checkSetFactory方法。 这可能会导致一个SecurityException 。 如果您的应用程序需要设置其他安全管理器,则必须确保组ActivationGroupDesc的策略文件授予组设置新安全管理器所需的权限。 (注意:如果您的小组下载并设置了安全管理器,这将是必要的)。
在创建组后, ActivationSystem被通知的组是通过调用活性activeGroup方法,该方法返回ActivationMonitor的组。 该应用程序不必调用activeGroup ,因为它是用这种方法照顾独立。
一旦创建了组,对currentGroupID方法的后续调用将返回该组的标识符,直到组变为非活动状态。
id - 激活组的标识符
desc - 激活组的描述符
incarnation - 集团的化身号码(集团初始创建时为零)
ActivationException - 如果组已存在或组创建过程中发生错误
SecurityException - 如果创建组的权限被拒绝。
(注意:安全管理器checkSetFactory方法的默认实现需要RuntimePermission“setFactory”)
UnsupportedOperationException - 当且仅当此实现不支持激活时
SecurityManager.checkSetFactory()
public static ActivationGroupID currentGroupID()
UnsupportedOperationException - 当且仅当此实现不支持激活时
public static void setSystem(ActivationSystem system) throws ActivationException
getSystem方法将通过查看激活器注册表中的名称“java.rmi.activation.ActivationSystem”来尝试获取对ActivationSystem的ActivationSystem 。
默认情况下,用于查找激活系统的端口号由ActivationSystem.SYSTEM_PORT定义。
该端口可以通过设置属性java.rmi.activation.port 。
如果有安全管理员,这种方法首先调用安全管理器的checkSetFactory方法。 这可能会导致SecurityException。
system - 远程参考
ActivationSystem
ActivationException - 如果激活系统已经设置
SecurityException - 如果设置激活系统的权限被拒绝。
(注意:安全管理器checkSetFactory方法的默认实现需要RuntimePermission“setFactory”)
UnsupportedOperationException - 当且仅当此实现不支持激活时
getSystem() ,
SecurityManager.checkSetFactory()
public static ActivationSystem getSystem() throws ActivationException
setSystem方法设置。
如果没有通过setSystem方法设置激活系统,那么getSystem方法会通过查看激活器注册表中的名称“java.rmi.activation.ActivationSystem”来尝试获得对ActivationSystem的ActivationSystem 。
默认情况下,用于查找激活系统的端口号由ActivationSystem.SYSTEM_PORT定义。
该端口可以通过设置属性java.rmi.activation.port 。
ActivationException - 如果无法获取或未绑定激活系统(意味着它不在运行)
UnsupportedOperationException - 当且仅当此实现不支持激活时
setSystem(java.rmi.activation.ActivationSystem)
protected void activeObject(ActivationID id, MarshalledObject<? extends Remote> mobj) throws ActivationException, UnknownObjectException, RemoteException
activeObject回调activeObject 。
该呼叫简单地转发给该组的ActivationMonitor 。
id - 对象的标识符
mobj - 包含远程对象的存根的编组对象
UnknownObjectException - 如果对象未注册
RemoteException - 如果呼叫通知监视器失败
ActivationException - 如果发生激活错误
protected void inactiveGroup()
throws UnknownGroupException,
RemoteException
inactiveGroup 。
该呼叫简单地转发到组的ActivationMonitor 。
此外,VM的当前组设置为null。
UnknownGroupException - 如果组未注册
RemoteException - 如果呼叫通知监视器失败
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.