Класс ActivationGroup
- java.lang.Object
-
- java.rmi.server.RemoteObject
-
- java.rmi.server.RemoteServer
-
- java.rmi.server.UnicastRemoteObject
-
- java.rmi.activation.ActivationGroup
- Все реализованные интерфейсы:
- Serializable, ActivationInstantiator, Remote
public abstract class ActivationGroup extends UnicastRemoteObject implements ActivationInstantiator
Группа ActivationGroup отвечает за создание новых экземпляров "активируемых" объектов в своей группе, уведомляя свой ActivationMonitor о том, когда объекты становятся активными или неактивными, или вся группа становится неактивной.
Группа ActivationGroup изначально создаётся несколькими способами:
- в качестве побочного эффекта создания
ActivationDescбез явного указанияActivationGroupIDдля первого активируемого объекта в группе, или - через метод
ActivationGroup.createGroup - в качестве побочного эффекта активации первого объекта в группе, чья
ActivationGroupDescбыла только зарегистрирована.
Только активизатор может пересоздать ActivationGroup. Активизатор по мере необходимости запускает отдельный виртуальную машину (например, как дочерний процесс) для каждой зарегистрированной группы активации и направляет запросы активации в соответствующую группу. Способ запуска виртуальных машин зависит от реализации. Группа активации создается через статический метод ActivationGroup.createGroup. Метод createGroup имеет два требования к создаваемой группе: 1) группа должна быть конкретным подклассом ActivationGroup, и 2) группа должна иметь конструктор, принимающий два аргумента:
- идентификатор группы
ActivationGroupID, и - данные инициализации группы (в виде
java.rmi.MarshalledObject).
При создании, по умолчанию ActivationGroup переопределит системные свойства свойствами, запрошенными при создании её ActivationGroupDesc, и установит SecurityManager в качестве системного менеджера безопасности по умолчанию. Если ваше приложение требует установки определенных свойств при активации объектов в группе, приложение должно создать специальный объект Properties содержащий эти свойства, затем создать ActivationGroupDesc с объектом Properties, и использовать ActivationGroup.createGroup перед созданием каких-либо ActivationDesc (перед созданием по умолчанию ActivationGroupDesc). Если ваше приложение требует использования менеджера безопасности отличного от SecurityManager, в свойствах ActivativationGroupDescriptor можно установить свойство java.security.manager с именем менеджера безопасности, который вы хотите установить.
- С:
- 1.2
- См. также:
-
ActivationInstantiator,ActivationGroupDesc,ActivationGroupID, Сериализованная форма
Поля
Поля унаследованные от класса java.rmi.server.RemoteObject
ref Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
ActivationGroup(ActivationGroupID groupID) Создаёт группу активации с заданным идентификатором группы активации. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
protected void |
activeObject(ActivationID id,
MarshalledObject<? extends Remote> mobj) Этот защищённый метод необходим подклассам для выполнения обратного вызова |
abstract void |
activeObject(ActivationID id,
Remote obj) Метод |
static ActivationGroup |
createGroup(ActivationGroupID id,
ActivationGroupDesc desc,
long incarnation) Создаёт и устанавливает группу активации для текущей виртуальной машины. |
static ActivationGroupID |
currentGroupID() Возвращает идентификатор текущей группы активации. |
static ActivationSystem |
getSystem() Возвращает систему активации для виртуальной машины. |
protected void |
inactiveGroup() Этот защищённый метод необходим подклассам для выполнения обратного вызова |
boolean |
inactiveObject(ActivationID id) Метод |
static void |
setSystem(ActivationSystem system) Устанавливает систему активации для виртуальной машины. |
Методы унаследованные от класса java.rmi.server.UnicastRemoteObject
clone, exportObject, exportObject, exportObject, unexportObject Методы унаследованные от класса java.rmi.server.RemoteServer
getClientHost, getLog, setLog Методы унаследованные от класса java.rmi.server.RemoteObject
equals, getRef, hashCode, toString, toStub Методы унаследованные от класса java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait Методы унаследованные от интерфейса java.rmi.activation.ActivationInstantiator
newInstance Конструкторы
ActivationGroup
protected ActivationGroup(ActivationGroupID groupID)
throws RemoteException Создаёт группу активации с заданным идентификатором группы активации. Группа экспортируется как java.rmi.server.UnicastRemoteObject.
- Параметры:
-
groupID- идентификатор группы - Исключения:
-
RemoteException- если эту группу нельзя было экспортировать -
UnsupportedOperationException- если и только если активация не поддерживается данной реализацией - С:
- 1.2
Методы
inactiveObject
public boolean inactiveObject(ActivationID id)
throws ActivationException,
UnknownObjectException,
RemoteException Метод inactiveObject группы вызывается косвенно через вызов метода Activatable.inactive. Реализация удалённого объекта должна вызвать метод Activatable объекта inactive при деактивации объекта (объект считает, что он больше не активен). Если объект не вызывает Activatable.inactive при деактивации, объект никогда не будет собран сборщиком мусора, так как группа сохраняет сильные ссылки на созданные объекты.
Метод inactiveObject группы анэкспортирует удалённый объект из среды выполнения RMI, чтобы объект больше не мог получать входящие вызовы RMI. Объект будет анэкспортирован только если у него нет ожидающих или выполняющихся вызовов. Подкласс ActivationGroup должен переопределять этот метод и анэкспортировать объект.
После удаления объекта из среды выполнения RMI, группа должна уведомить свой ActivationMonitor (через метод inactiveObject монитора), что удалённый объект в настоящее время не активен, чтобы удалённый объект был повторно активирован активизатором при последующей запросе активации.
Этот метод просто уведомляет монитор группы о том, что объект неактивен. Конкретный подкласс ActivationGroup отвечает за дополнительное требование анэкспорта объекта.
- Параметры:
-
id- идентификатор активации объекта - Возвращает:
- true, если объект был успешно деактивирован; в противном случае возвращает false.
- Исключения:
-
UnknownObjectException- если объект неизвестен (возможно, уже неактивен) -
RemoteException- если вызов уведомления монитора завершился ошибкой -
ActivationException- если группа неактивна - С:
- 1.2
activeObject
public abstract void activeObject(ActivationID id,
Remote obj)
throws ActivationException,
UnknownObjectException,
RemoteException Метод activeObject группы вызывается, когда объект экспортируется (либо при создании объекта Activatable или явном вызове Activatable.exportObject). Группа должна уведомить свой ActivationMonitor о том, что объект активен (через метод activeObject монитора), если этого ещё не было сделано.
- Параметры:
-
id- идентификатор объекта -
obj- реализация удалённого объекта - Исключения:
-
UnknownObjectException- если объект не зарегистрирован -
RemoteException- если вызов уведомления монитора завершился ошибкой -
ActivationException- если группа неактивна - С:
- 1.2
createGroup
public static ActivationGroup createGroup(ActivationGroupID id,
ActivationGroupDesc desc,
long incarnation)
throws ActivationException Создаёт и устанавливает группу активации для текущей виртуальной машины. Группа активации может быть установлена только если она в настоящее время не установлена. Группа активации устанавливается с помощью метода createGroup при запуске повторного создания группы активации Activator для обработки входящих запросов activate. Сначала группа должна быть зарегистрирована в ActivationSystem прежде чем её можно будет создать с помощью этого метода.
Класс группы, указанный в ActivationGroupDesc должен быть конкретным подклассом ActivationGroup и иметь публичный конструктор, принимающий два аргумента: ActivationGroupID группы и MarshalledObject с данными инициализации группы (полученными из ActivationGroupDesc.
Если имя класса группы, указанное в ActivationGroupDesc равно null, то этот метод будет вести себя так, как если бы описание группы содержало имя класса реализации по умолчанию для группы активации.
Обратите внимание, что если ваше приложение создаёт собственную пользовательскую группу активации, необходимо установить диспетчер безопасности для этой группы. В противном случае объекты не могут быть активированы в группе. По умолчанию установлен SecurityManager.
Если в виртуальной машине группы уже установлен диспетчер безопасности, то этот метод сначала вызывает метод checkSetFactory диспетчера безопасности. Это может привести к SecurityException. Если ваше приложение нуждается в установке другого диспетчера безопасности, необходимо убедиться, что файл политик, указанный в ActivationGroupDesc группы, предоставляет группе необходимые разрешения для установки нового диспетчера безопасности. (Примечание: Это будет необходимо, если ваша группа загружает и устанавливает диспетчер безопасности).
После создания группы ActivationSystem уведомляется о том, что группа активна, вызывая метод activeGroup, который возвращает ActivationMonitor для группы. Приложению не нужно вызывать activeGroup самостоятельно, так как этим занимается этот метод.
После создания группы последующие вызовы метода currentGroupID будут возвращать идентификатор этой группы до тех пор, пока группа не станет неактивной.
- Параметры:
-
id- идентификатор группы активации -
desc- описание группы активации -
incarnation- номер инкарнации группы (ноль при первоначальном создании группы) - Возвращает:
- группа активации для виртуальной машины
- Исключения:
-
ActivationException- если группа уже существует или произошла ошибка при создании группы -
SecurityException- если разрешение на создание группы отказано. (Примечание: реализация диспетчера безопасностиcheckSetFactoryтребует разрешения RuntimePermission "setFactory") -
UnsupportedOperationException- если и только если активация не поддерживается данной реализацией - См. также:
SecurityManager.checkSetFactory()
currentGroupID
public static ActivationGroupID currentGroupID()
Возвращает идентификатор текущей группы активации. Возвращает null, если для этой виртуальной машины нет активной группы.
- Возвращает:
- идентификатор группы активации
- Исключения:
-
UnsupportedOperationException- если и только если активация не поддерживается данной реализацией - С:
- 1.2
setSystem
public static void setSystem(ActivationSystem system)
throws ActivationException Устанавливает систему активации для виртуальной машины. Система активации может быть установлена только если нет активной группы. Если система активации не установлена с помощью этого вызова, то метод getSystem пытается получить ссылку на ActivationSystem, выполнив поиск имени "java.rmi.activation.ActivationSystem" в реестре активизатора. По умолчанию номер порта, используемый для поиска системы активации, определён в ActivationSystem.SYSTEM_PORT. Этот порт может быть изменён путём установки свойства java.rmi.activation.port.
Если есть диспетчер безопасности, этот метод сначала вызывает метод checkSetFactory диспетчера безопасности. Это может привести к исключению SecurityException.
- Параметры:
-
system- удалённая ссылка наActivationSystem - Исключения:
-
ActivationException- если система активации уже установлена -
SecurityException- если разрешение на установку системы активации отказано. (Примечание: реализация диспетчера безопасностиcheckSetFactoryтребует разрешения RuntimePermission "setFactory") -
UnsupportedOperationException- если и только если активация не поддерживается данной реализацией - С:
- 1.2
- См. также:
-
getSystem(),SecurityManager.checkSetFactory()
getSystem
public static ActivationSystem getSystem()
throws ActivationException Возвращает систему активации для виртуальной машины. Система активации может быть установлена методом setSystem . Если система активации не установлена с помощью метода setSystem, то метод getSystem пытается получить ссылку на ActivationSystem, выполнив поиск имени "java.rmi.activation.ActivationSystem" в реестре активизатора. По умолчанию номер порта, используемый для поиска системы активации, определён в ActivationSystem.SYSTEM_PORT. Этот порт может быть изменён путём установки свойства java.rmi.activation.port.
- Возвращает:
- система активации для виртуальной машины/группы
- Исключения:
-
ActivationException- если система активации не может быть получена или не привязана (означает, что она не запущена) -
UnsupportedOperationException- если и только если активация не поддерживается данной реализацией - С:
- 1.2
- См. также:
setSystem(java.rmi.activation.ActivationSystem)
activeObject
protected void activeObject(ActivationID id,
MarshalledObject<? extends Remote> mobj)
throws ActivationException,
UnknownObjectException,
RemoteException Этот защищённый метод необходим подклассам для вызова обратного вызова activeObject монитору группы. Вызов просто передаётся монитору ActivationMonitor группы.
- Параметры:
-
id- идентификатор объекта -
mobj- сериализованный объект, содержащий заглушку удалённого объекта - Исключения:
-
UnknownObjectException- если объект не зарегистрирован -
RemoteException- если вызов уведомления монитора завершился ошибкой -
ActivationException- если произошла ошибка активации - С:
- 1.2
inactiveGroup
protected void inactiveGroup()
throws UnknownGroupException,
RemoteException Этот защищённый метод необходим подклассам для вызова обратного вызова inactiveGroup монитору группы. Вызов просто передаётся монитору ActivationMonitor группы. Кроме того, текущая группа для виртуальной машины устанавливается в null.
- Исключения:
-
UnknownGroupException- если группа не зарегистрирована -
RemoteException- если вызов уведомления монитора завершился ошибкой - С:
- 1.2
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.