Spec-Zone.ru › OpenJDK 24

Класс RelationService

java.lang.Object
javax.management.NotificationBroadcasterSupport
javax.management.relation.RelationService
Все реализованные интерфейсы:
EventListener, MBeanRegistration, NotificationBroadcaster, NotificationEmitter, NotificationListener, RelationServiceMBean
public class RelationService extends NotificationBroadcasterSupport implements RelationServiceMBean, MBeanRegistration, NotificationListener
Сервис отношений отвечает за создание и удаление типов отношений и самих отношений, за поддержание согласованности и предоставление механизмов запросов.

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

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

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

С момента:
1.5

Краткое описание конструкторов

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

Краткое описание методов

Модификатор и тип Метод Описание
void addRelation(ObjectName relationObjectName)
Добавляет созданный пользователем MBean (и зарегистрированный им на сервере MBean) в качестве отношения в сервис отношений.
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)
Получает MBeans, связанные с заданным 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)
Получает количество MBeans, в настоящее время ссылающихся на заданную роль.
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 postDeregister()
Позволяет MBean выполнить любые операции, необходимые после отмены регистрации на сервере MBean.
void postRegister(Boolean registrationDone)
Позволяет MBean выполнить любые операции, необходимые после регистрации на сервере MBean или после неудачной регистрации.
void preDeregister()
Позволяет MBean выполнить любые необходимые операции перед отмене регистрации сервером MBean.
ObjectName preRegister(MBeanServer server, ObjectName name)
Позволяет MBean выполнить любые необходимые операции перед регистрацией на сервере 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, removeNotificationListener, removeNotificationListener, sendNotification

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

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

Подробное описание конструкторов

RelationService

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

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

Подробное описание методов

isActive

public void isActive() throws RelationServiceNotRegisteredException
Проверяет, активна ли служба отношений. Текущее условие заключается в том, что служба отношений должна быть зарегистрирована в сервере MBean.
Определено в:
isActive в интерфейсе RelationServiceMBean
Исключения:
RelationServiceNotRegisteredException - если она не зарегистрирована

preRegister

public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить любые операции, необходимые ему перед регистрацией в сервере MBean. Если имя MBean не указано, MBean может предоставить имя для своей регистрации. Если возникает какое-либо исключение, MBean не будет зарегистрирован в сервере MBean.
Определено в:
preRegister в интерфейсе MBeanRegistration
Параметры:
server - сервер MBean, в котором будет зарегистрирован MBean.
name - имя объекта MBean. Это имя равно null, если параметр name в одном из методов createMBean или registerMBean интерфейса MBeanServer равен null. В этом случае этот метод должен вернуть не null ObjectName для нового MBean.
Возвращает:
Имя, под которым должен быть зарегистрирован MBean. Это значение не должно быть null. Если параметр name не равен null, обычно, но не обязательно, он будет возвращаемым значением.
Исключения:
Exception - Это исключение будет перехвачено сервером MBean и переброшено как MBeanRegistrationException.

postRegister

public void postRegister(Boolean registrationDone)
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить любые необходимые операции после регистрации в сервере MBean или после того, как регистрация завершилась неудачно.

Если реализация этого метода выбрасывает RuntimeException или Error, сервер MBean перебросит их в RuntimeMBeanException или RuntimeErrorException соответственно. Однако, бросок исключения в postRegister не изменит состояние MBean: если MBean уже был зарегистрирован (registrationDone равно true), MBean останется зарегистрированным.

Это может быть запутанно для кода, вызывающего createMBean() или registerMBean(), так как такой код может предположить, что регистрация MBean завершилась неудачно, когда такое исключение возникает. Поэтому рекомендуется, чтобы реализации postRegister не выбрасывали исключения Runtime или ошибки, если этого можно избежать.

Определено в:
postRegister в интерфейсе MBeanRegistration
Параметры:
registrationDone - Указывает, была ли MBean успешно зарегистрирована в сервере MBean. Значение false означает, что фаза регистрации завершилась неудачно.

preDeregister

public void preDeregister() throws Exception
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить любые операции, необходимые ему перед отменением регистрации в сервере MBean.
Определено в:
preDeregister в интерфейсе MBeanRegistration
Исключения:
Exception - Это исключение будет перехвачено сервером MBean и переброшено как MBeanRegistrationException.

postDeregister

public void postDeregister()
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить любые необходимые операции после отмены регистрации в сервере MBean.

Если реализация этого метода выбрасывает RuntimeException или Error, сервер MBean перебросит их в RuntimeMBeanException или RuntimeErrorException соответственно. Однако, бросок исключения в postDeregister не изменит состояние MBean: MBean уже был успешно дезагрегирован и останется таким.

Это может быть запутанно для кода, вызывающего unregisterMBean(), так как он может предположить, что отмена регистрации MBean завершилась неудачно. Поэтому рекомендуется, чтобы реализации postDeregister не выбрасывали исключения Runtime или ошибки, если этого можно избежать.

Определено в:
postDeregister в интерфейсе MBeanRegistration

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 - если:

- нет имени RelationService в MBean

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

RelationTypeNotFoundException - если:

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

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

InvalidRoleValueException - если:

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

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

- один ссылаемый 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 предполагаемого отношения
Возвращает:
идентификатор отношения (String) или null (если ObjectName не является отношением, обрабатываемым службой отношений)
Исключение:
IllegalArgumentException - если параметр null

hasRelation

public Boolean hasRelation(String relationId) throws IllegalArgumentException
Проверяет, существует ли отношение, идентифицированное в службе отношений, с заданным идентификатором отношения.
Определено в:
hasRelation в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения, определяющий отношение
Возвращает:
boolean: true, если отношение существует, false в противном случае
Исключение:
IllegalArgumentException - если параметр null

getAllRelationIds

public List<String> getAllRelationIds()
Возвращает все идентификаторы отношений для всех отношений, обрабатываемых службой отношений.
Определено в:
getAllRelationIds в интерфейсе RelationServiceMBean
Возвращает:
ArrayList строк

checkRoleReading

public Integer checkRoleReading(String roleName, String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
Проверяет, может ли заданная роль быть прочитана в отношении заданного типа.
Определено в:
checkRoleReading в интерфейсе RelationServiceMBean
Параметры:
roleName - имя проверяемой роли
relationTypeName - имя типа отношения
Возвращает:
целое число, содержащее целое число, соответствующее возможным проблемам, представленным константами в RoleUnresolved:

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

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

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

Исключение:
IllegalArgumentException - если параметр null
RelationTypeNotFoundException - если тип отношения неизвестен в службе отношений

checkRoleWriting

public Integer checkRoleWriting(Role role, String relationTypeName, Boolean initFlag) throws IllegalArgumentException, RelationTypeNotFoundException
Проверяет, может ли заданная роль быть установлена в отношении заданного типа.
Определено в:
checkRoleWriting в интерфейсе RelationServiceMBean
Параметры:
role - проверяемая роль
relationTypeName - имя типа отношения
initFlag - флаг, указывающий, что проверка выполняется для инициализации роли, доступ для записи не проверяется.
Возвращает:
целое число, содержащее целое число, соответствующее возможным проблемам, представленным константами в 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

Исключение:
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.

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

Specified by:
sendRelationCreationNotification в интерфейсе 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.

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

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

Specified by:
sendRoleUpdateNotification в интерфейсе 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.

Источник объекта — сам Relation Service.

Вызывается в методе Relation Service removeRelation().

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

updateRoleMap

public void updateRoleMap(String relationId, Role newRole, List<ObjectName> oldValue) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationNotFoundException
Обрабатывает обновление карты ролей Relation Service для обновления заданной роли в заданном отношении.

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

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

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

Specified by:
updateRoleMap в интерфейсе 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 в интерфейсе 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 в интерфейсе 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 в интерфейсе RelationServiceMBean
Parameters:
mbeanName — ObjectName MBean
relationTypeName — может быть null; если указано, в поиске будут учитываться только отношения этого типа. В противном случае учитываются все типы отношений.
roleName — может быть null; если указано, будут возвращены только отношения, где MBean упоминается в этой роли. В противном случае учитываются все роли.
Returns:
HashMap, где ключи — идентификаторы отношений, в которых упоминается MBean, а значение — для каждого ключа, список имён ролей (так как MBean может упоминаться в нескольких ролях в одном отношении).
Throws:
IllegalArgumentException — если параметр null

findAssociatedMBeans

public Map<ObjectName, List<String>> findAssociatedMBeans(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
Возвращает MBean, связанные с заданным в отношении.

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

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

findRelationsOfType

public List<String> findRelationsOfType(String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
Возвращает идентификаторы отношений заданного типа.
Specified by:
findRelationsOfType в интерфейсе RelationServiceMBean
Parameters:
relationTypeName — имя типа отношения
Returns:
ArrayList идентификаторов отношений.
Throws:
IllegalArgumentException — если параметр null
RelationTypeNotFoundException — если нет типа отношения с таким именем.

Получение роли

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)

Получение ролей

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)

Получение всех ролей

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

Получение кардинальности роли

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

Установка роли

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)

Установка ролей

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[])

Получение ссылающихся MBean

public Map<ObjectName, List<String>> getReferencedMBeans(String relationId) throws IllegalArgumentException, RelationNotFoundException
Возвращает MBean, ссылающиеся на различные роли отношения.
Указано в:
getReferencedMBeans в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
Возвращает:
словарь HashMap, сопоставляющий:

ObjectName -> ArrayList строк (имен ролей)

Выбрасывает:
IllegalArgumentException - если параметр имеет значение null
RelationNotFoundException - если нет отношения для данного идентификатора отношения

Получение имени типа отношения

public String getRelationTypeName(String relationId) throws IllegalArgumentException, RelationNotFoundException
Возвращает имя связанного типа отношения для данного отношения.
Указано в:
getRelationTypeName в интерфейсе RelationServiceMBean
Параметры:
relationId - идентификатор отношения
Возвращает:
имя связанного типа отношения.
Выбрасывает:
IllegalArgumentException - если параметр имеет значение null
RelationNotFoundException - если нет отношения для данного идентификатора отношения

Обработка уведомления

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

Получение информации об уведомлении

public MBeanNotificationInfo[] getNotificationInfo()
Возвращает объект NotificationInfo, содержащий имя класса Java уведомления и типы отправляемых уведомлений.
Указано в:
getNotificationInfo в интерфейсе NotificationBroadcaster
Возвращает:
массив возможных уведомлений.

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/relation/RelationService.html

Spec-Zone.ru

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