Spec-Zone.ru › OpenJDK 8

Класс 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)

Этот защищённый метод необходим подклассам для выполнения обратного вызова 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, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API