Класс RelationService

Все реализованные интерфейсы:
EventListener, MBeanRegistration, NotificationBroadcaster, NotificationEmitter, NotificationListener, RelationServiceMBean
public class RelationService
extends NotificationBroadcasterSupport
implements RelationServiceMBean, MBeanRegistration, NotificationListener

Служба отношений отвечает за создание и удаление типов отношений и самих отношений, за поддержание согласованности и предоставление механизмов запросов.

Она реализует NotificationBroadcaster, расширяя NotificationBroadcasterSupport для отправки уведомлений при удалении отношения.

Она реализует интерфейс NotificationListener, чтобы получать уведомления об отмене регистрации MBean, которые ссылаются на роли в отношениях, и об MBean отношений.

Она реализует интерфейс MBeanRegistration, чтобы получить свой ObjectName и MBean Server.

С момента:
1.5

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

Конструктор Описание
RelationService​(boolean immediatePurgeFlag)

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

Методы

Модификатор и тип Метод Описание
void addRelation​(ObjectName relationObjectName)

Добавляет MBean, созданный пользователем (и зарегистрированный им в MBean Server), как отношение в службе отношений.

void addRelationType​(RelationType relationTypeObj)

Добавляет указанный объект как тип отношения.

Integer checkRoleReading​(String roleName, String relationTypeName)

Проверяет, может ли указанная роль читаться в отношении заданного типа.

Integer checkRoleWriting​(Role role, String relationTypeName, Boolean initFlag)

Проверяет, может ли заданная роль быть установлена в отношении заданного типа.

void createRelation​(String relationId, String relationTypeName, RoleList roleList)

Создаёт простое отношение (представленное объектом RelationSupport) заданного типа отношения и добавляет его в службу отношений.

void createRelationType​(String relationTypeName, RoleInfo[] roleInfoArray)

Создаёт тип отношения (объект RelationTypeSupport) с заданной информацией о ролях (предоставленной объектами RoleInfo) и добавляет его в службу отношений.

Map<ObjectName,​List<String>> findAssociatedMBeans​(ObjectName mbeanName, String relationTypeName, String roleName)

Возвращает MBean, связанные с заданным MBean в отношении.

Map<String,​List<String>> findReferencingRelations​(ObjectName mbeanName, String relationTypeName, String roleName)

Возвращает отношения, где указанный MBean ссылается.

List<String> findRelationsOfType​(String relationTypeName)

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

List<String> getAllRelationIds()

Возвращает все идентификаторы отношений для всех отношений, обрабатываемых службой отношений.

List<String> getAllRelationTypeNames()

Возвращает имена всех известных типов отношений.

RoleResult getAllRoles​(String relationId)

Возвращает все роли, присутствующие в отношении.

MBeanNotificationInfo[] getNotificationInfo()

Возвращает объект NotificationInfo, содержащий имя класса Java уведомления и типы отправленных уведомлений.

boolean getPurgeFlag()

Возвращает флаг, указывающий, следует ли при получении уведомления об отмене регистрации MBean, связанного с отношением, немедленно очистить отношения (поискать недействительные отношения) или это будет выполнено только при явном вызове метода purgeRelations.

Map<ObjectName,​List<String>> getReferencedMBeans​(String relationId)

Возвращает MBeans, на которые ссылаются различные роли отношения.

String getRelationTypeName​(String relationId)

Возвращает имя связанного типа отношения для данного отношения.

List<ObjectName> getRole​(String relationId, String roleName)

Возвращает значение роли для данного имени роли в данном отношении.

Integer getRoleCardinality​(String relationId, String roleName)

Возвращает количество MBean, в данный момент ссылающихся на заданную роль.

RoleInfo getRoleInfo​(String relationTypeName, String roleInfoName)

Возвращает информацию о роли для данного имени роли заданного типа отношения.

List<RoleInfo> getRoleInfos​(String relationTypeName)

Возвращает список информации о ролях (объекты RoleInfo) заданного типа отношения.

RoleResult getRoles​(String relationId, String[] roleNameArray)

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

void handleNotification​(Notification notif, Object handback)

Вызывается при возникновении уведомления JMX.

Boolean hasRelation​(String relationId)

Проверяет, существует ли отношение, идентифицированное в службе отношений, с данным идентификатором отношения.

void isActive()

Проверяет, активна ли служба отношений.

String isRelation​(ObjectName objectName)

Возвращает идентификатор отношения, связанный с заданным ObjectName, если MBean был добавлен в качестве отношения в службу отношений.

ObjectName isRelationMBean​(String relationId)

Если отношение представлено MBean (созданным пользователем и добавленным в качестве отношения в службу отношений), возвращает ObjectName MBean.

void purgeRelations()

Очищает отношения.

void removeRelation​(String relationId)

Удаляет заданное отношение из службы отношений.

void removeRelationType​(String relationTypeName)

Удаляет заданный тип отношения из службы отношений.

void sendRelationCreationNotification​(String relationId)

Отправляет уведомление (RelationNotification) о создании отношения.

void sendRelationRemovalNotification​(String relationId, List<ObjectName> unregMBeanList)

Отправляет уведомление (RelationNotification) об удалении отношения.

void sendRoleUpdateNotification​(String relationId, Role newRole, List<ObjectName> oldValue)

Отправляет уведомление (RelationNotification) об обновлении роли в данном отношении.

void setPurgeFlag​(boolean purgeFlag)

Устанавливает флаг, указывающий, следует ли при получении уведомления об отмене регистрации MBean, связанного с отношением, немедленно очистить отношения (поискать недействительные отношения) или это будет выполнено только при явном вызове метода purgeRelations.

void setRole​(String relationId, Role role)

Устанавливает заданную роль в заданном отношении.

RoleResult setRoles​(String relationId, RoleList roleList)

Устанавливает заданные роли в заданном отношении.

void updateRoleMap​(String relationId, Role newRole, List<ObjectName> oldValue)

Обрабатывает обновление карты ролей службы отношений для обновления заданной роли в заданном отношении.

Методы, объявленные в классе javax.management.NotificationBroadcasterSupport

addNotificationListener, handleNotification, sendNotification

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе javax.management.MBeanRegistration

postDeregister, postRegister, preDeregister, preRegister

Методы, объявленные в интерфейсе javax.management.NotificationBroadcaster

removeNotificationListener

Методы, объявленные в интерфейсе javax.management.NotificationEmitter

removeNotificationListener

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

RelationService

public RelationService(boolean immediatePurgeFlag)

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

Параметры:
immediatePurgeFlag - флаг, указывающий, следует ли при получении уведомления об отмене регистрации MBean, связанного с отношением, немедленно очистить отношения (поискать недействительные отношения) или это будет выполнено только при явном вызове метода purgeRelations.

true — немедленная очистка.

Методы

isActive

public void isActive()
              throws RelationServiceNotRegisteredException

Проверяет, активна ли служба отношений. Текущее условие заключается в том, что служба отношений должна быть зарегистрирована в сервере MBean.

Определено в:
isActive в интерфейсе RelationServiceMBean
Исключения:
RelationServiceNotRegisteredException - если она не зарегистрирована

getPurgeFlag

public boolean getPurgeFlag()

Возвращает флаг, указывающий, необходимо ли при получении уведомления об отмене регистрации MBean, на который ссылается отношение, выполнить немедленное «очищение» отношений (поиск недействительных отношений) или это будет выполнено только при явном вызове метода purgeRelations.

true — немедленное очищение.

Определено в:
getPurgeFlag в интерфейсе RelationServiceMBean
Возвращает:
true, если очищение выполняется автоматически.
См. также:
setPurgeFlag(boolean)

setPurgeFlag

public void setPurgeFlag(boolean purgeFlag)

Устанавливает флаг, указывающий, необходимо ли при получении уведомления об отмене регистрации MBean, на который ссылается отношение, выполнить немедленное «очищение» отношений (поиск недействительных отношений) или это будет выполнено только при явном вызове метода purgeRelations.

true — немедленное очищение.

Определено в:
setPurgeFlag в интерфейсе RelationServiceMBean
Параметры:
purgeFlag — флаг
См. также:
getPurgeFlag()

createRelationType

public void createRelationType(String relationTypeName,
                               RoleInfo[] roleInfoArray)
                        throws IllegalArgumentException,
                               InvalidRelationTypeException

Создаёт тип отношения (объект RelationTypeSupport) с заданными сведениями о ролях (предоставленными объектами RoleInfo) и добавляет его в службу отношений.

Определено в:
createRelationType в интерфейсе RelationServiceMBean
Параметры:
relationTypeName — имя типа отношения
roleInfoArray — массив сведений о ролях
Исключения:
IllegalArgumentException — если параметр null
InvalidRelationTypeException — если:

- уже существует тип отношения с таким именем

- одно и то же имя использовано для двух разных сведений о ролях

- сведения о ролях не предоставлены

- предоставлены сведения о роле null

addRelationType

public void addRelationType(RelationType relationTypeObj)
                     throws IllegalArgumentException,
                            InvalidRelationTypeException

Добавляет заданный объект в качестве типа отношения. Ожидается, что объект реализует интерфейс RelationType.

Определено в:
addRelationType в интерфейсе RelationServiceMBean
Параметры:
relationTypeObj — объект типа отношения (реализующий интерфейс RelationType)
Исключения:
IllegalArgumentException — если параметр null или если relationTypeObj.getRelationTypeName() возвращает null.
InvalidRelationTypeException — если:

- одно и то же имя использовано для двух разных ролей

- сведения о ролях не предоставлены

- предоставлены сведения о роле null

- уже существует тип отношения с таким именем

getAllRelationTypeNames

public List<String> getAllRelationTypeNames()

Возвращает имена всех известных типов отношений.

Определено в:
getAllRelationTypeNames в интерфейсе RelationServiceMBean
Возвращает:
Список имен типов отношений (строки)

getRoleInfos

public List<RoleInfo> getRoleInfos(String relationTypeName)
                            throws IllegalArgumentException,
                                   RelationTypeNotFoundException

Возвращает список сведений о ролях (объектов RoleInfo) заданного типа отношения.

Определено в:
getRoleInfos в интерфейсе RelationServiceMBean
Параметры:
relationTypeName — имя типа отношения
Возвращает:
Список объектов RoleInfo.
Исключения:
IllegalArgumentException — если параметр null
RelationTypeNotFoundException — если нет типа отношения с таким именем.

getRoleInfo

public RoleInfo getRoleInfo(String relationTypeName,
                            String roleInfoName)
                     throws IllegalArgumentException,
                            RelationTypeNotFoundException,
                            RoleInfoNotFoundException

Возвращает сведения о роли для заданного имени роли заданного типа отношения.

Определено в:
getRoleInfo в интерфейсе RelationServiceMBean
Параметры:
relationTypeName — имя типа отношения
roleInfoName — имя роли
Возвращает:
Объект RoleInfo.
Исключения:
IllegalArgumentException — если параметр null
RelationTypeNotFoundException — если тип отношения неизвестен в службе отношений
RoleInfoNotFoundException — если роль не является частью типа отношения.

removeRelationType

public void removeRelationType(String relationTypeName)
                        throws RelationServiceNotRegisteredException,
                               IllegalArgumentException,
                               RelationTypeNotFoundException

Удаляет заданный тип отношения из службы отношений.

Объекты отношений этого типа будут удалены из службы отношений.

Определено в:
removeRelationType в интерфейсе RelationServiceMBean
Параметры:
relationTypeName — имя типа отношения, подлежащего удалению
Исключения:
RelationServiceNotRegisteredException — если служба отношений не зарегистрирована в сервере MBean
IllegalArgumentException — если параметр null
RelationTypeNotFoundException — если нет типа отношения с таким именем

createRelation

public void createRelation(String relationId,
                           String relationTypeName,
                           RoleList roleList)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RoleNotFoundException,
                           InvalidRelationIdException,
                           RelationTypeNotFoundException,
                           InvalidRoleValueException

Создаёт простое отношение (представленное объектом RelationSupport) заданного типа отношения и добавляет его в службу отношений.

Роли инициализируются в соответствии с предоставленным списком ролей в параметре. Те, которые не инициализированы таким образом, устанавливаются в пустой ArrayList объектов ObjectNames.

Отправляется уведомление RelationNotification с типом RELATION_BASIC_CREATION.

Определено в:
createRelation в интерфейсе RelationServiceMBean
Параметры:
relationId — идентификатор отношения для уникальной идентификации отношения внутри службы отношений
relationTypeName — имя типа отношения (должно быть создано в службе отношений)
roleList — список ролей для инициализации ролей отношения (может быть null).
Исключения:
RelationServiceNotRegisteredException — если служба отношений не зарегистрирована в сервере MBean
IllegalArgumentException — если параметр null, за исключением списка ролей, который может быть null, если нет инициализации ролей
RoleNotFoundException — если для роли предоставлено значение, которое не существует в типе отношения
InvalidRelationIdException — если идентификатор отношения уже используется
RelationTypeNotFoundException — если тип отношения неизвестен в службе отношений
InvalidRoleValueException — если:

- одно и то же имя роли используется для двух разных ролей

- количество ссылающихся MBean в заданном значении меньше ожидаемой минимальной степени

- количество ссылающихся MBean в предоставленном значении превышает ожидаемую максимальную степень

- один ссылающийся MBean в значении не является объектом ожидаемого класса MBean для этой роли

- MBean, предоставленный для этой роли, не существует

addRelation

public void addRelation(ObjectName relationObjectName)
                 throws IllegalArgumentException,
                        RelationServiceNotRegisteredException,
                        NoSuchMethodException,
                        InvalidRelationIdException,
                        InstanceNotFoundException,
                        InvalidRelationServiceException,
                        RelationTypeNotFoundException,
                        RoleNotFoundException,
                        InvalidRoleValueException

Добавляет созданный пользователем MBean (и зарегистрированный им в сервере MBean) в качестве отношения в службу отношений.

Для добавления в качестве отношения MBean должен соответствовать следующим требованиям:

- реализовывать интерфейс Relation

- иметь для ObjectName RelationService ObjectName текущей службы отношений

- иметь уникальный и неиспользуемый идентификатор отношения в текущей службе отношений

- иметь для типа отношения тип отношения, созданный в службе отношений

- иметь роли, соответствующие сведениям о роле, предоставленным в типе отношения.

Определено в:
addRelation в интерфейсе RelationServiceMBean
Параметры:
relationObjectName — ObjectName добавляемого отношения MBean.
Исключения:
IllegalArgumentException — если параметр null
RelationServiceNotRegisteredException — если служба отношений не зарегистрирована в сервере MBean
NoSuchMethodException — если MBean не реализует интерфейс Relation
InvalidRelationIdException — если:

- нет идентификатора отношения в MBean

- идентификатор отношения уже используется в службе отношений

InstanceNotFoundException — если MBean для заданного ObjectName не зарегистрирован
InvalidRelationServiceException — если:

- нет имени службы отношений в MBean

- имя службы отношений в MBean не соответствует имени текущей службы отношений

RelationTypeNotFoundException — если:

- нет имени типа отношения в MBean

- имя типа отношения в MBean не соответствует типу отношения, созданному в службе отношений

InvalidRoleValueException — если:

- количество ссылающихся MBeans в роли меньше ожидаемой минимальной степени

- количество ссылающихся MBeans в роли превышает ожидаемую максимальную степень

- один ссылающийся MBean в значении не является объектом ожидаемого класса MBean для этой роли

- MBean, предоставленный для этой роли, не существует

RoleNotFoundException — если для роли предоставлено значение, которое не существует в типе отношения

isRelationMBean

public ObjectName isRelationMBean(String relationId)
                           throws IllegalArgumentException,
                                  RelationNotFoundException

Если отношение представлено MBean (созданным пользователем и добавленным в качестве отношения в службу отношений), возвращает ObjectName MBean.

Определено в:
isRelationMBean в интерфейсе RelationServiceMBean
Параметры:
relationId — идентификатор отношения, определяющий отношение
Возвращает:
ObjectName соответствующего MBean отношения или null, если отношение не является MBean.
Исключения:
IllegalArgumentException — если параметр null
RelationNotFoundException — нет отношения, связанного с этим идентификатором

isRelation

public String isRelation(ObjectName objectName)
                  throws IllegalArgumentException

Возвращает идентификатор отношения, связанный с заданным ObjectName, если MBean был добавлен в качестве отношения в службу отношений.

Определено в:
isRelation в интерфейсе RelationServiceMBean
Параметры:
objectName — ObjectName предполагаемого отношения
Возвращает:
идентификатор отношения (строка) или null (если ObjectName не является отношением, обрабатываемым службой отношений)
Исключения:
IllegalArgumentException — если параметр null

hasRelation

public Boolean hasRelation(String relationId)
                    throws IllegalArgumentException

Проверяет, есть ли отношение, идентифицируемое в службе отношений, с заданным идентификатором отношения.

Specified by:
hasRelation in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения, определяющий отношение
Returns:
boolean: true, если отношение существует, false в противном случае
Throws:
IllegalArgumentException - если параметр null

getAllRelationIds

public List<String> getAllRelationIds()

Возвращает все идентификаторы отношений для всех отношений, обрабатываемых службой Relation Service.

Specified by:
getAllRelationIds in interface RelationServiceMBean
Returns:
ArrayList of String

checkRoleReading

public Integer checkRoleReading(String roleName,
                                String relationTypeName)
                         throws IllegalArgumentException,
                                RelationTypeNotFoundException

Проверяет, может ли заданная роль быть прочитана в отношении данного типа.

Specified by:
checkRoleReading in interface RelationServiceMBean
Parameters:
roleName - имя роли для проверки
relationTypeName - имя типа отношения
Returns:
целое число, представляющее возможные проблемы, представленные как константы в RoleUnresolved:

- 0, если роль может быть прочитана

- целое число, соответствующее RoleStatus.NO_ROLE_WITH_NAME

- целое число, соответствующее RoleStatus.ROLE_NOT_READABLE

Throws:
IllegalArgumentException - если параметр null
RelationTypeNotFoundException - если тип отношения неизвестен в службе Relation Service

checkRoleWriting

public Integer checkRoleWriting(Role role,
                                String relationTypeName,
                                Boolean initFlag)
                         throws IllegalArgumentException,
                                RelationTypeNotFoundException

Проверяет, может ли заданная роль быть установлена в отношении данного типа.

Specified by:
checkRoleWriting in interface RelationServiceMBean
Parameters:
role - роль для проверки
relationTypeName - имя типа отношения
initFlag - флаг, указывающий, что проверка выполняется для инициализации роли, доступ на запись не будет проверен.
Returns:
целое число, представляющее возможные проблемы, представленные как константы в RoleUnresolved:

- 0, если роль может быть установлена

- целое число, соответствующее RoleStatus.NO_ROLE_WITH_NAME

- целое число для RoleStatus.ROLE_NOT_WRITABLE

- целое число для RoleStatus.LESS_THAN_MIN_ROLE_DEGREE

- целое число для RoleStatus.MORE_THAN_MAX_ROLE_DEGREE

- целое число для RoleStatus.REF_MBEAN_OF_INCORRECT_CLASS

- целое число для RoleStatus.REF_MBEAN_NOT_REGISTERED

Throws:
IllegalArgumentException - если параметр null
RelationTypeNotFoundException - если неизвестный тип отношения

sendRelationCreationNotification

public void sendRelationCreationNotification(String relationId)
                                      throws IllegalArgumentException,
                                             RelationNotFoundException

Отправляет уведомление (RelationNotification) о создании отношения. Тип уведомления:

- RelationNotification.RELATION_BASIC_CREATION, если отношение является внутренним объектом службы Relation Service

- RelationNotification.RELATION_MBEAN_CREATION, если отношение является MBean, добавленным как отношение.

Объектом источника является сама служба Relation Service.

Вызывается в методах createRelation() и addRelation() службы Relation Service.

Specified by:
sendRelationCreationNotification in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения обновленного отношения
Throws:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения для данного идентификатора отношения

sendRoleUpdateNotification

public void sendRoleUpdateNotification(String relationId,
                                       Role newRole,
                                       List<ObjectName> oldValue)
                                throws IllegalArgumentException,
                                       RelationNotFoundException

Отправляет уведомление (RelationNotification) об обновлении роли в данном отношении. Тип уведомления:

- RelationNotification.RELATION_BASIC_UPDATE, если отношение является внутренним объектом службы Relation Service

- RelationNotification.RELATION_MBEAN_UPDATE, если отношение является MBean, добавленным как отношение.

Объектом источника является сама служба Relation Service.

Вызывается в методах setRole() (для данной роли) и setRoles() (для каждой роли) MBean отношения (реализация, предоставленная в классе RelationSupport).

Также вызывается в методах setRole() (для данной роли) и setRoles() (для каждой роли) службы Relation Service.

Specified by:
sendRoleUpdateNotification in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения обновленного отношения
newRole - новая роль (имя и новое значение)
oldValue - старое значение роли (список объектов ObjectName)
Throws:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения для данного идентификатора отношения

sendRelationRemovalNotification

public void sendRelationRemovalNotification(String relationId,
                                            List<ObjectName> unregMBeanList)
                                     throws IllegalArgumentException,
                                            RelationNotFoundException

Отправляет уведомление (RelationNotification) об удалении отношения. Тип уведомления:

- RelationNotification.RELATION_BASIC_REMOVAL, если отношение было только внутренним для службы Relation Service

- RelationNotification.RELATION_MBEAN_REMOVAL, если отношение зарегистрировано как MBean.

Для MBean, на которые ссылается такое отношение, ничего не будет сделано,

Specified by:
sendRelationRemovalNotification in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения обновленного отношения
unregMBeanList - список ObjectNames MBean, которые должны быть отменены регистрации из-за удаления отношения (может быть null)
Throws:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения для данного идентификатора отношения

updateRoleMap

public void updateRoleMap(String relationId,
                          Role newRole,
                          List<ObjectName> oldValue)
                   throws IllegalArgumentException,
                          RelationServiceNotRegisteredException,
                          RelationNotFoundException

Обрабатывает обновление карты ролей службы Relation Service для обновления данной роли в данном отношении.

Вызывается в методах setRole() (для данной роли) и setRoles() (для каждой роли) MBean отношения (реализация, предоставленная в классе RelationSupport).

Также вызывается в методах setRole() (для данной роли) и setRoles() (для каждой роли) службы Relation Service.

Чтобы позволить службе Relation Service поддерживать согласованность (в случае отмены регистрации MBean) и иметь возможность выполнять запросы, этот метод должен вызываться при обновлении роли.

Specified by:
updateRoleMap in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения обновленного отношения
newRole - новая роль (имя и новое значение)
oldValue - старое значение роли (список объектов ObjectName)
Throws:
IllegalArgumentException - если параметр null
RelationServiceNotRegisteredException - если служба Relation Service не зарегистрирована в MBean Server
RelationNotFoundException - если нет отношения для данного идентификатора.

removeRelation

public void removeRelation(String relationId)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RelationNotFoundException

Удаляет данное отношение из службы Relation Service.

Отправляется уведомление RelationNotification, его тип:

- RelationNotification.RELATION_BASIC_REMOVAL, если отношение было только внутренним для службы Relation Service

- RelationNotification.RELATION_MBEAN_REMOVAL, если отношение зарегистрировано как MBean.

Для MBean, на которые ссылается такое отношение, ничего не будет сделано,

Specified by:
removeRelation in interface RelationServiceMBean
Parameters:
relationId - идентификатор отношения, которое нужно удалить
Throws:
RelationServiceNotRegisteredException - если служба Relation Service не зарегистрирована в MBean Server
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения, соответствующего данному идентификатору отношения

purgeRelations

public void purgeRelations()
                    throws RelationServiceNotRegisteredException

Очищает отношения.

В зависимости от значения purgeFlag этот метод либо вызывается автоматически при получении уведомления об отмене регистрации MBean, на который ссылается отношение (если флаг установлен в true), либо нет (если флаг установлен в false).

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

Поведение зависит от кардинальности роли, в которой указан отмененный MBean:

- если удаление одной ссылки MBean в роли делает количество ссылок меньше минимальной степени, отношение должно быть удалено.

- если оставшееся количество ссылок после удаления ссылки MBean по-прежнему находится в диапазоне кардинальности, сохраните отношение и обновите его, вызвав его обратный вызов handleMBeanUnregistration().

Specified by:
purgeRelations in interface RelationServiceMBean
Throws:
RelationServiceNotRegisteredException - если служба Relation Service не зарегистрирована в MBean Server.

findReferencingRelations

public Map<String,List<String>> findReferencingRelations​(ObjectName mbeanName,
                                                               String relationTypeName,
                                                               String roleName)
                                                        throws IllegalArgumentException

Извлекает отношения, где указан MBean.

Это соответствует операциям CIM "References" и "ReferenceNames".

Specified by:
findReferencingRelations in interface RelationServiceMBean
Parameters:
mbeanName - ObjectName MBean
relationTypeName - может быть null; если указан, в поиске будут учитываться только отношения этого типа. В противном случае учитываются все типы отношений.
roleName - может быть null; если указан, будут возвращены только отношения, где на MBean ссылается эта роль. В противном случае учитываются все роли.
Returns:
HashMap, где ключи - это идентификаторы отношений, где указан MBean, а значение - для каждого ключа - ArrayList имен ролей (поскольку на MBean может ссылаться несколько ролей в одном отношении).
Throws:
IllegalArgumentException - если параметр null

findAssociatedMBeans

public Map<ObjectName,List<String>> findAssociatedMBeans​(ObjectName mbeanName,
                                                               String relationTypeName,
                                                               String roleName)
                                                        throws IllegalArgumentException

Извлекает MBean, связанные с данным в отношении.

Это соответствует операциям CIM Associators и AssociatorNames.

Указано в:
findAssociatedMBeans в интерфейсе RelationServiceMBean
Параметры:
mbeanName - Имя объекта MBean
relationTypeName - может быть null; если указано, то при поиске будут учитываться только отношения этого типа. В противном случае учитываются все типы отношений.
roleName - может быть null; если указано, то при поиске будут учитываться только отношения, где MBean упоминается в этой роли. В противном случае учитываются все роли.
Возвращает:
словарь HashMap, где ключами являются имена объектов MBean, связанных с данным MBean, а значениями для каждого ключа — список ArrayList идентификаторов отношений, в которых MBean-ключ связан с данным MBean (так как они могут быть связаны в нескольких различных отношениях).
Исключения:
IllegalArgumentException - если параметр null

findRelationsOfType

public List<String> findRelationsOfType(String relationTypeName)
                                 throws IllegalArgumentException,
                                        RelationTypeNotFoundException

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

Указано в:
findRelationsOfType в интерфейсе RelationServiceMBean
Параметры:
relationTypeName - имя типа отношения
Возвращает:
список ArrayList идентификаторов отношений.
Исключения:
IllegalArgumentException - если параметр null
RelationTypeNotFoundException - если нет типа отношения с данным именем.

getRole

public List<ObjectName> getRole(String relationId,
                                String roleName)
                         throws RelationServiceNotRegisteredException,
                                IllegalArgumentException,
                                RelationNotFoundException,
                                RoleNotFoundException

Извлекает значение роли для данного имени роли в данном отношении.

Указано в:
getRole в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
roleName - имя роли
Возвращает:
список ArrayList объектов ObjectName, являющихся значением роли
Исключения:
RelationServiceNotRegisteredException - если служба отношений не зарегистрирована
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
RoleNotFoundException - если:

- нет роли с данным именем

или

- роль недоступна для чтения.

См. также:
setRole(java.lang.String, javax.management.relation.Role)

getRoles

public RoleResult getRoles(String relationId,
                           String[] roleNameArray)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RelationNotFoundException

Извлекает значения ролей с заданными именами в заданном отношении.

Указано в:
getRoles в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
roleNameArray - массив имен ролей, которые нужно извлечь
Возвращает:
объект RoleResult, включающий список RoleList (для успешно извлечённых ролей) и список RoleUnresolvedList (для ролей, которые не были извлечены).
Исключения:
RelationServiceNotRegisteredException - если служба отношений не зарегистрирована в сервере MBean
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
См. также:
setRoles(java.lang.String, javax.management.relation.RoleList)

getAllRoles

public RoleResult getAllRoles(String relationId)
                       throws IllegalArgumentException,
                              RelationNotFoundException,
                              RelationServiceNotRegisteredException

Возвращает все роли, присутствующие в отношении.

Указано в:
getAllRoles в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
Возвращает:
объект RoleResult, включающий список RoleList (для успешно извлечённых ролей) и список RoleUnresolvedList (для ролей, которые не могут быть прочитаны).
Исключения:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
RelationServiceNotRegisteredException - если служба отношений не зарегистрирована в сервере MBean

getRoleCardinality

public Integer getRoleCardinality(String relationId,
                                  String roleName)
                           throws IllegalArgumentException,
                                  RelationNotFoundException,
                                  RoleNotFoundException

Извлекает количество MBean, которые в настоящее время упоминаются в заданной роли.

Указано в:
getRoleCardinality в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
roleName - имя роли
Возвращает:
количество MBean, в настоящее время упоминаемых в этой роли
Исключения:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
RoleNotFoundException - если нет роли с данным именем

setRole

public void setRole(String relationId,
                    Role role)
             throws RelationServiceNotRegisteredException,
                    IllegalArgumentException,
                    RelationNotFoundException,
                    RoleNotFoundException,
                    InvalidRoleValueException

Устанавливает заданную роль в заданном отношении.

Проверит роль в соответствии с её определением, предоставленным в типе отношения.

Служба отношений будет отслеживать изменения, чтобы сохранить согласованность отношений, обрабатывая удаления зарегистрированных MBean.

Указано в:
setRole в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
role - роль, которая должна быть установлена (имя и новое значение)
Исключения:
RelationServiceNotRegisteredException - если служба отношений не зарегистрирована в сервере MBean
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
RoleNotFoundException - если роль не существует или недоступна для записи
InvalidRoleValueException - если предоставленное значение для роли некорректно:

- количество MBean, упоминаемых в данном значении, меньше ожидаемой минимальной степени

или

- количество MBean, упоминаемых в предоставленном значении, превышает ожидаемую максимальную степень

или

- один из упоминаемых MBean в значении не является объектом класса MBean, ожидаемого для этой роли

или

- MBean, указанный для этой роли, не существует

См. также:
getRole(java.lang.String, java.lang.String)

setRoles

public RoleResult setRoles(String relationId,
                           RoleList roleList)
                    throws RelationServiceNotRegisteredException,
                           IllegalArgumentException,
                           RelationNotFoundException

Устанавливает заданные роли в заданном отношении.

Проверит роль в соответствии с её определением, предоставленным в типе отношения.

Служба отношений отслеживает изменения, чтобы сохранить согласованность отношений, обрабатывая удаления зарегистрированных MBean.

Указано в:
setRoles в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
roleList - список ролей, которые должны быть установлены
Возвращает:
объект RoleResult, включающий список RoleList (для успешно установленных ролей) и список RoleUnresolvedList (для ролей, которые не были установлены).
Исключения:
RelationServiceNotRegisteredException - если служба отношений не зарегистрирована в сервере MBean
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором
См. также:
getRoles(java.lang.String, java.lang.String[])

getReferencedMBeans

public Map<ObjectName,List<String>> getReferencedMBeans​(String relationId)
                                                       throws IllegalArgumentException,
                                                              RelationNotFoundException

Извлекает MBean, упомянутые в различных ролях отношения.

Указано в:
getReferencedMBeans в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
Возвращает:
словарь HashMap, отображающий:

Имя объекта -> список ArrayList имён ролей

Исключения:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором

getRelationTypeName

public String getRelationTypeName(String relationId)
                           throws IllegalArgumentException,
                                  RelationNotFoundException

Возвращает имя связанного типа отношения для данного отношения.

Указано в:
getRelationTypeName в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
Возвращает:
имя связанного типа отношения.
Исключения:
IllegalArgumentException - если параметр null
RelationNotFoundException - если нет отношения с данным идентификатором

handleNotification

public void handleNotification(Notification notif,
                               Object handback)

Вызывается при появлении события JMX. В настоящее время обрабатывает события об удалении MBean, которые либо упоминаются в роли отношения, либо представляют собой само отношение.

Указано в:
handleNotification в интерфейсе NotificationListener
Параметры:
notif - Событие.
handback - Непрозрачный объект, помогающий слушателю связать информацию об источнике MBean (может быть null).

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()

Возвращает объект NotificationInfo, содержащий имя Java-класса события и типы событий, которые были отправлены.

Указано в:
getNotificationInfo в интерфейсе NotificationBroadcaster
Возвращает:
массив возможных событий.

© 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.management/javax/management/relation/RelationService.html

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