Класс ActivationGroup

Все реализованные интерфейсы:
Serializable, ActivationInstantiator, Remote
public abstract class ActivationGroup
extends UnicastRemoteObject
implements ActivationInstantiator

Группа активирования отвечает за создание новых экземпляров «активируемых» объектов в своей группе, уведомляя свой монитор, когда объекты становятся активными или неактивными, или когда вся группа становится неактивной.

Группа активирования изначально создается несколькими способами:

  • как побочный эффект создания активируемого объекта без явного указания группы для первого активируемого объекта в группе, или
  • через метод ActivationGroup.createGroup
  • как побочный эффект активации первого объекта в группе, чья информация была зарегистрирована только в момент активации.

Только активатор может восстановить группу активирования. Активатор по мере необходимости запускает отдельный виртуальную машину (например, как дочерний процесс) для каждой зарегистрированной группы активирования и направляет запросы на активацию в соответствующую группу. Способ запуска виртуальных машин зависит от реализации.

Группа активирования создается через статический метод ActivationGroup.createGroup. Метод ActivationGroup.createGroup имеет два требования к создаваемой группе: 1) группа должна быть конкретным подклассом ActivationGroup, и 2) группа должна иметь конструктор, принимающий два аргумента:

  • идентификатор группы ActivationGroupID, и
  • данные инициализации группы (в объекте java.rmi.MarshalledObject).

При создании, по умолчанию, ActivationGroup переопределит системные свойства запрошенными при создании его ActivationGroupDesc, и установит SecurityManager в качестве системного менеджера безопасности по умолчанию. Если ваше приложение требует установки определенных свойств при активации объектов в группе, приложение должно создать специальный объект Properties, содержащий эти свойства, затем создать ActivationGroupDesc с этим объектом, и вызвать ActivationGroup.createGroup перед созданием каких-либо ActivationDesc (до создания ActivationGroupDesc). Если ваше приложение требует использование менеджера безопасности отличного от SecurityManager, в свойствах ActivationGroupDescriptor можно установить свойство java.security.manager для установки необходимого менеджера.

С:
1.2
См. также:
ActivationInstantiator, ActivationGroupDesc, ActivationGroupID, Serialized Form

Поля

Поля, объявленные в классе java.rmi.server.RemoteObject

ref

Конструкторы

Модификатор Конструктор Описание
protected ActivationGroup​(ActivationGroupID groupID)

Создает группу активирования с заданным идентификатором.

Методы

Модификатор и тип Метод Описание
protected void activeObject​(ActivationID id, MarshalledObject<? extends Remote> mobj)

Этот защищенный метод необходим подклассам для вызова обратного вызова activeObject в монитор группы.

abstract void activeObject​(ActivationID id, Remote obj)

Метод activeObject группы вызывается, когда объект экспортирован (либо при создании объекта Activatable, либо при явном вызове Activatable.exportObject).

static ActivationGroup createGroup​(ActivationGroupID id, ActivationGroupDesc desc, long incarnation)

Создает и устанавливает группу активирования для текущей виртуальной машины.

static ActivationGroupID currentGroupID()

Возвращает идентификатор текущей группы активирования.

static ActivationSystem getSystem()

Возвращает систему активации для виртуальной машины.

protected void inactiveGroup()

Этот защищенный метод необходим подклассам для вызова обратного вызова inactiveGroup в монитор группы.

boolean inactiveObject​(ActivationID id)

Метод inactiveObject группы вызывается косвенно через вызов метода Activatable.inactive.

static void setSystem​(ActivationSystem system)

Устанавливает систему активации для виртуальной машины.

Методы, объявленные в классе java.rmi.server.UnicastRemoteObject

clone, exportObject, exportObject, 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

Конструкторы

Группа активизации

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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.rmi/java/rmi/activation/ActivationGroup.html

Spec-Zone .ru
спецификации, руководства, описания, API