Класс 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 |
Конструктор. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addRelation |
Добавляет MBean, созданный пользователем (и зарегистрированный им на сервере MBean), как взаимосвязь в службу взаимосвязей. |
void |
addRelationType |
Добавляет указанный объект в качестве типа взаимосвязи. |
Integer |
checkRoleReading |
Проверяет, можно ли прочитать указанную роль во взаимосвязи данного типа. |
Integer |
checkRoleWriting |
Проверяет, можно ли установить указанную роль во взаимосвязи данного типа. |
void |
createRelation |
Создаёт простую взаимосвязь (представленную объектом RelationSupport) заданного типа взаимосвязи и добавляет её в службу взаимосвязей. |
void |
createRelationType |
Создаёт тип взаимосвязи (объект RelationTypeSupport) с заданными данными о ролях (предоставленными объектами RoleInfo) и добавляет его в службу взаимосвязей. |
Map |
findAssociatedMBeans |
Возвращает MBean, связанные с заданным MBean во взаимосвязи. |
Map |
findReferencingRelations |
Возвращает взаимосвязи, в которых упоминается заданный MBean. |
List |
findRelationsOfType |
Возвращает идентификаторы взаимосвязей для взаимосвязей данного типа. |
List |
getAllRelationIds() |
Возвращает все идентификаторы взаимосвязей для всех взаимосвязей, обрабатываемых службой взаимосвязей. |
List |
getAllRelationTypeNames() |
Возвращает имена всех известных типов взаимосвязей. |
RoleResult |
getAllRoles |
Возвращает все роли, присутствующие во взаимосвязи. |
MBeanNotificationInfo[] |
getNotificationInfo() |
Возвращает объект NotificationInfo, содержащий имя класса Java уведомления и типы отправляемых уведомлений. |
boolean |
getPurgeFlag() |
Возвращает флаг, указывающий, следует ли немедленно очищать взаимосвязи при получении уведомления об отмене регистрации MBean, упоминаемого в взаимосвязи, или это будет выполнено только при явном вызове метода purgeRelations. |
Map |
getReferencedMBeans |
Возвращает MBean, упоминаемые в различных ролях взаимосвязи. |
String |
getRelationTypeName |
Возвращает имя связанного типа взаимосвязи для данной взаимосвязи. |
List |
getRole |
Возвращает значение роли для данного имени роли в данной взаимосвязи. |
Integer |
getRoleCardinality |
Возвращает количество MBean, в настоящее время упоминаемых в данной роли. |
RoleInfo |
getRoleInfo |
Возвращает сведения о роли для данного имени роли заданного типа взаимосвязи. |
List |
getRoleInfos |
Возвращает список сведений о ролях (объекты RoleInfo) заданного типа взаимосвязи. |
RoleResult |
getRoles |
Возвращает значения ролей с заданными именами в данной взаимосвязи. |
void |
handleNotification |
Вызывается при возникновении уведомления JMX. |
Boolean |
hasRelation |
Проверяет, есть ли взаимосвязь, идентифицированная в службе взаимосвязей, с заданным идентификатором взаимосвязи. |
void |
isActive() |
Проверяет, активна ли служба взаимосвязей. |
String |
isRelation |
Возвращает идентификатор взаимосвязи, связанный с заданным ObjectName, если MBean был добавлен в качестве взаимосвязи в службе взаимосвязей. |
ObjectName |
isRelationMBean |
Если взаимосвязь представлена MBean (созданным пользователем и добавленным в качестве взаимосвязи в службе взаимосвязей), возвращает ObjectName MBean. |
void |
postDeregister() |
Позволяет MBean выполнять любые необходимые операции после отмены регистрации на сервере MBean. |
void |
postRegister |
Позволяет MBean выполнять любые необходимые операции после регистрации на сервере MBean или после неудачной регистрации. |
void |
preDeregister() |
Позволяет MBean выполнить необходимые операции перед отменею регистрации на сервере MBean. |
ObjectName |
preRegister |
Позволяет MBean выполнить необходимые операции перед регистрацией на сервере MBean. |
void |
purgeRelations() |
Очищает взаимосвязи. |
void |
removeRelation |
Удаляет заданную взаимосвязь из службы взаимосвязей. |
void |
removeRelationType |
Удаляет заданный тип взаимосвязи из службы взаимосвязей. |
void |
sendRelationCreationNotification |
Отправляет уведомление (RelationNotification) о создании взаимосвязи. |
void |
sendRelationRemovalNotification |
Отправляет уведомление (RelationNotification) об удалении взаимосвязи. |
void |
sendRoleUpdateNotification |
Отправляет уведомление (RelationNotification) об обновлении роли в данной взаимосвязи. |
void |
setPurgeFlag |
Устанавливает флаг, указывающий, следует ли немедленно очищать взаимосвязи при получении уведомления об отмене регистрации MBean, упоминаемого в взаимосвязи, или это будет выполнено только при явном вызове метода purgeRelations. |
void |
setRole |
Устанавливает заданную роль в данной взаимосвязи. |
RoleResult |
setRoles |
Устанавливает заданные роли в данной взаимосвязи. |
void |
updateRoleMap |
Обрабатывает обновление карты ролей службы взаимосвязей для обновления заданной роли в данной взаимосвязи. |
Методы, объявленные в классе javax.management.NotificationBroadcasterSupport
addNotificationListener, handleNotification, removeNotificationListener, removeNotificationListener, sendNotification
Подробное описание конструкторов
RelationService
public RelationService(boolean immediatePurgeFlag)
- Параметры:
-
immediatePurgeFlag- Флаг, указывающий, когда при получении уведомления об отмене регистрации MBean, связанного с отношением, необходимо выполнить немедленное "очищение" отношений (поиск отношений, которые больше недействительны), или это будет выполнено только при явном вызове метода purgeRelations.true — немедленное очищение.
Подробное описание методов
isActive
public void isActive() throws RelationServiceNotRegisteredException
- Определено в:
-
isActiveв интерфейсеRelationServiceMBean - Исключения:
-
RelationServiceNotRegisteredException- если она не зарегистрирована
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
MBeanRegistration- Определено в:
-
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Если реализация этого метода генерирует 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- Определено в:
-
preDeregisterв интерфейсеMBeanRegistration - Исключения:
-
Exception- Это исключение будет перехвачено сервером MBean и переброшено какMBeanRegistrationException.
postDeregister
public void postDeregister()
MBeanRegistrationЕсли реализация этого метода генерирует RuntimeException или Error, сервер MBean перебросит их внутри RuntimeMBeanException или RuntimeErrorException соответственно. Однако, генерация исключения в postDeregister не повлияет на состояние MBean: MBean был успешно дерегистрирован и останется таким.
Это может быть запутанным для кода, вызывающего unregisterMBean(), так как он может предположить, что отмена регистрации MBean завершилась неудачей. Поэтому рекомендуется, чтобы реализации postDeregister не генерировали исключения Runtime или ошибки, если это возможно.
- Определено в:
-
postDeregisterв интерфейсеMBeanRegistration
getPurgeFlag
public boolean getPurgeFlag()
true — немедленное очищение.
- Определено в:
-
getPurgeFlagв интерфейсеRelationServiceMBean - Возвращает:
- true, если очищения автоматические.
- См. также:
setPurgeFlag
public void setPurgeFlag(boolean purgeFlag)
true — немедленное очищение.
- Определено в:
-
setPurgeFlagв интерфейсеRelationServiceMBean - Параметры:
-
purgeFlag- флаг - См. также:
createRelationType
public void createRelationType(String relationTypeName, RoleInfo[] roleInfoArray) throws IllegalArgumentException, InvalidRelationTypeException
- Определено в:
-
createRelationTypeв интерфейсеRelationServiceMBean - Параметры:
-
relationTypeName- имя типа отношения -
roleInfoArray- массив информации о ролях - Исключения:
-
IllegalArgumentException- если параметр null -
InvalidRelationTypeException- Если:- уже существует тип отношения с этим именем
- одно и то же имя было использовано для двух разных типов ролей
- информация о ролях не предоставлена
- предоставлена одна null-роль
addRelationType
public void addRelationType(RelationType relationTypeObj) throws IllegalArgumentException, InvalidRelationTypeException
- Определено в:
-
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
- Определено в:
-
getRoleInfosв интерфейсеRelationServiceMBean - Параметры:
-
relationTypeName- имя типа отношения - Возвращает:
- Список RoleInfo.
- Исключения:
-
IllegalArgumentException- если параметр null -
RelationTypeNotFoundException- если нет типа отношения с этим именем.
getRoleInfo
public RoleInfo getRoleInfo(String relationTypeName, String roleInfoName) throws IllegalArgumentException, RelationTypeNotFoundException, RoleInfoNotFoundException
- Specified by:
-
getRoleInfoв интерфейсеRelationServiceMBean - Parameters:
-
relationTypeName- имя типа отношения -
roleInfoName- имя роли - Returns:
- Объект RoleInfo.
- Throws:
-
IllegalArgumentException- если параметр null -
RelationTypeNotFoundException- если тип отношения неизвестен в службе отношений -
RoleInfoNotFoundException- если роль не является частью типа отношения.
removeRelationType
public void removeRelationType(String relationTypeName) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationTypeNotFoundException
Объекты отношений этого типа будут удалены из службы отношений.
- Specified by:
-
removeRelationTypeв интерфейсеRelationServiceMBean - Parameters:
-
relationTypeName- имя типа отношения для удаления - Throws:
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в сервере MBean -
IllegalArgumentException- если параметр null -
RelationTypeNotFoundException- Если тип отношения с таким именем отсутствует
createRelation
public void createRelation(String relationId, String relationTypeName, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RoleNotFoundException, InvalidRelationIdException, RelationTypeNotFoundException, InvalidRoleValueException
Роли инициализируются в соответствии с предоставленным в параметре списком ролей. Те, которые не инициализированы таким образом, устанавливаются в пустой ArrayList ObjectNames.
Отправка уведомления RelationNotification с типом RELATION_BASIC_CREATION.
- Specified by:
-
createRelationв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения, для уникальной идентификации отношения внутри службы отношений -
relationTypeName- имя типа отношения (должно быть создано в службе отношений) -
roleList- список ролей для инициализации ролей отношения (может быть null). - Throws:
-
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 должен соответствовать следующим требованиям:
- реализовывать интерфейс Relation
- иметь для RelationService ObjectName ObjectName текущей службы отношений
- иметь уникальный и неиспользованный идентификатор отношения в текущей службе отношений
- иметь для типа отношения тип отношения, созданный в службе отношений
- иметь роли, соответствующие информации о роли, предоставленной в типе отношения.
- Specified by:
-
addRelationв интерфейсеRelationServiceMBean - Parameters:
-
relationObjectName- ObjectName MBean отношения, который должен быть добавлен. - Throws:
-
IllegalArgumentException- если параметр null -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в сервере MBean -
NoSuchMethodException- Если MBean не реализует интерфейс Relation -
InvalidRelationIdException- если:- идентификатор отношения отсутствует в MBean
- идентификатор отношения уже используется в службе отношений
-
InstanceNotFoundException- если MBean для заданного ObjectName не зарегистрирован -
InvalidRelationServiceException- если:- имя службы отношений отсутствует в MBean
- имя службы отношений в MBean не соответствует имени текущей службы отношений
-
RelationTypeNotFoundException- если:- имя типа отношения отсутствует в MBean
- имя типа отношения в MBean не соответствует типу отношения, созданному в службе отношений
-
InvalidRoleValueException- если:- количество ссылаемых MBean в роли меньше ожидаемой минимальной степени
- количество ссылаемых MBean в роли превышает ожидаемую максимальную степень
- один ссылаемый MBean в значении не является объектом ожидаемого класса MBean для этой роли
- MBean, предоставленный для этой роли, не существует
-
RoleNotFoundException- если для роли предоставлено значение, которое не существует в типе отношения
isRelationMBean
public ObjectName isRelationMBean(String relationId) throws IllegalArgumentException, RelationNotFoundException
- Specified by:
-
isRelationMBeanв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения, определяющий отношение - Returns:
- ObjectName соответствующего MBean отношения или null, если отношение не является MBean.
- Throws:
-
IllegalArgumentException- если параметр null -
RelationNotFoundException- нет отношения, связанного с этим идентификатором
isRelation
public String isRelation(ObjectName objectName) throws IllegalArgumentException
- Specified by:
-
isRelationв интерфейсеRelationServiceMBean - Parameters:
-
objectName- ObjectName предполагаемого отношения - Returns:
- идентификатор отношения (строка) или null (если ObjectName не является отношением, обрабатываемым службой отношений)
- Throws:
-
IllegalArgumentException- если параметр null
hasRelation
public Boolean hasRelation(String relationId) throws IllegalArgumentException
- Specified by:
-
hasRelationв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения, определяющий отношение - Returns:
- boolean: true, если отношение существует, false иначе
- Throws:
-
IllegalArgumentException- если параметр null
getAllRelationIds
public List<String> getAllRelationIds()
- Specified by:
-
getAllRelationIdsв интерфейсеRelationServiceMBean - Returns:
- ArrayList строк
checkRoleReading
public Integer checkRoleReading(String roleName, String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
- Specified by:
-
checkRoleReadingв интерфейсеRelationServiceMBean - Parameters:
-
roleName- имя роли для проверки -
relationTypeName- имя типа отношения - Returns:
- объект Integer, содержащий целое число, соответствующее возможным проблемам, представленным константами в RoleUnresolved:
- 0, если роль может быть прочитана
- целое число, соответствующее RoleStatus.NO_ROLE_WITH_NAME
- целое число, соответствующее RoleStatus.ROLE_NOT_READABLE
- Throws:
-
IllegalArgumentException- если параметр null -
RelationTypeNotFoundException- если тип отношения неизвестен в службе отношений
checkRoleWriting
public Integer checkRoleWriting(Role role, String relationTypeName, Boolean initFlag) throws IllegalArgumentException, RelationTypeNotFoundException
- Specified by:
-
checkRoleWritingв интерфейсеRelationServiceMBean - Parameters:
-
role- проверяемая роль -
relationTypeName- имя типа отношения -
initFlag- флаг, указывающий, что проверка выполняется для инициализации роли, доступ для записи не будет проверяться. - Returns:
- объект Integer, содержащий целое число, соответствующее возможным проблемам, представленным константами в 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.RELATION_BASIC_CREATION, если отношение является внутренним объектом службы отношений
- RelationNotification.RELATION_MBEAN_CREATION, если отношение является добавленным MBean.
Источник — сама служба отношений.
Вызывается в методах 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.RELATION_BASIC_UPDATE, если отношение является объектом внутри Relation Service
- RelationNotification.RELATION_MBEAN_UPDATE, если отношение представляет собой MBean, добавленный в качестве отношения.
Источник объекта — сам Relation Service.
Вызывается в методах 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.RELATION_BASIC_REMOVAL, если отношение было только внутри Relation Service
- RelationNotification.RELATION_MBEAN_REMOVAL, если отношение зарегистрировано как MBean.
Для MBean, на которые ссылается такое отношение, ничего не будет сделано.
Вызывается в методе 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
Вызывается в методах 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 -
RelationNotFoundException— если нет отношения для данного идентификатора.
removeRelation
public void removeRelation(String relationId) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
Отправляется уведомление RelationNotification, его тип:
- RelationNotification.RELATION_BASIC_REMOVAL, если отношение было только внутри Relation Service
- RelationNotification.RELATION_MBEAN_REMOVAL, если отношение зарегистрировано как MBean.
Для MBean, на которые ссылается такое отношение, ничего не будет сделано.
- Specified by:
-
removeRelationв интерфейсеRelationServiceMBean - Parameters:
-
relationId— идентификатор отношения, подлежащего удалению - Throws:
-
RelationServiceNotRegisteredException— если Relation Service не зарегистрирован в сервере MBean -
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.
findReferencingRelations
public Map<String,List<String>> findReferencingRelations(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
Это соответствует операциям CIM «Ссылки» и «Имена ссылок».
- Specified by:
-
findReferencingRelationsв интерфейсе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
Это соответствует операциям CIM Associators и AssociatorNames.
- Specified by:
-
findAssociatedMBeansв интерфейсеRelationServiceMBean - Parameters:
-
mbeanName— ObjectName MBean -
relationTypeName— может быть null; если указано, при поиске будут учитываться только отношения данного типа. В противном случае учитываются все типы отношений. -
roleName— может быть null; если указано, при поиске будут учитываться только отношения, в которых MBean ссылается на эту роль. В противном случае учитываются все роли. - Returns:
- HashMap, где ключи — ObjectNames связанных с заданным MBean, а значение — для каждого ключа, ArrayList идентификаторов отношений, в которых связанный 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— если нет типа отношения с таким именем.
getRole
public List<ObjectName> getRole(String relationId, String roleName) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException, RoleNotFoundException
- Specified by:
-
getRoleв интерфейсеRelationServiceMBean - Parameters:
-
relationId— идентификатор отношения -
roleName— имя роли - Returns:
- ArrayList объектов ObjectName, являющихся значением роли
- Throws:
-
RelationServiceNotRegisteredException— если Relation Service не зарегистрирован -
IllegalArgumentException— если параметр имеет значение null -
RelationNotFoundException— если нет отношения с данным идентификатором -
RoleNotFoundException— если:- нет роли с данным именем
или
- роль недоступна для чтения.
- See Also:
getRoles
public RoleResult getRoles(String relationId, String[] roleNameArray) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
- Specified by:
-
getRolesв интерфейсеRelationServiceMBean - Parameters:
-
relationId— идентификатор отношения -
roleNameArray— массив имен ролей, подлежащих получению - Returns:
- объект RoleResult, содержащий список ролей (для успешно полученных ролей) и список неразрешенных ролей (для ролей, не полученных).
- Throws:
-
RelationServiceNotRegisteredException— если Relation Service не зарегистрирован в сервере MBean -
IllegalArgumentException— если параметр имеет значение null -
RelationNotFoundException— если нет отношения с данным идентификатором - See Also:
getAllRoles
public RoleResult getAllRoles(String relationId) throws IllegalArgumentException, RelationNotFoundException, RelationServiceNotRegisteredException
- Specified by:
-
getAllRolesв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения - Returns:
- объект RoleResult, содержащий RoleList (для успешно полученных ролей) и RoleUnresolvedList (для ролей, недоступных для чтения).
- Throws:
-
IllegalArgumentException- если параметр null -
RelationNotFoundException- если нет отношения с данным идентификатором -
RelationServiceNotRegisteredException- если служба Relation не зарегистрирована в сервере MBean
getRoleCardinality
public Integer getRoleCardinality(String relationId, String roleName) throws IllegalArgumentException, RelationNotFoundException, RoleNotFoundException
- Specified by:
-
getRoleCardinalityв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения -
roleName- имя роли - Returns:
- количество MBean, в настоящее время ссылающихся на эту роль
- Throws:
-
IllegalArgumentException- если параметр null -
RelationNotFoundException- если нет отношения с данным идентификатором -
RoleNotFoundException- если нет роли с данным именем
setRole
public void setRole(String relationId, Role role) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException, RoleNotFoundException, InvalidRoleValueException
Будет проверять роль в соответствии с ее соответствующим определением роли, предоставленным в типе отношения.
Служба Relation будет отслеживать изменения, чтобы поддерживать согласованность отношений, обрабатывая отмены регистрации ссылочных MBean.
- Specified by:
-
setRoleв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения -
role- роль, подлежащая установке (имя и новое значение) - Throws:
-
RelationServiceNotRegisteredException- если служба Relation не зарегистрирована в сервере MBean -
RelationNotFoundException- если нет отношения с данным идентификатором -
IllegalArgumentException- если параметр null -
RoleNotFoundException- если роль не существует или не является доступной для записи -
InvalidRoleValueException- если предоставленное значение для роли недействительно:- количество ссылающихся MBean в заданном значении меньше ожидаемой минимальной степени
или
- количество ссылающихся MBean в предоставленном значении превышает ожидаемую максимальную степень
или
- один ссылающийся MBean в значении не является объектом ожидаемого класса MBean для этой роли
или
- MBean, предоставленный для этой роли, не существует
- See Also:
setRoles
public RoleResult setRoles(String relationId, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
Будет проверять роль в соответствии с ее соответствующим определением роли, предоставленным в типе отношения.
Служба Relation отслеживает изменения, чтобы поддерживать согласованность отношений, обрабатывая отмены регистрации ссылочных MBean.
- Specified by:
-
setRolesв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения -
roleList- список ролей, которые необходимо установить - Returns:
- объект RoleResult, содержащий RoleList (для успешно установленных ролей) и RoleUnresolvedList (для ролей, которые не были установлены).
- Throws:
-
RelationServiceNotRegisteredException- если служба Relation не зарегистрирована в сервере MBean -
IllegalArgumentException- если параметр null -
RelationNotFoundException- если нет отношения с данным идентификатором - See Also:
getReferencedMBeans
public Map<ObjectName,List<String>> getReferencedMBeans(String relationId) throws IllegalArgumentException, RelationNotFoundException
- Specified by:
-
getReferencedMBeansв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения - Returns:
- HashMap, сопоставляющая:
ObjectName -> ArrayList строк (имена ролей)
- Throws:
-
IllegalArgumentException- если параметр null -
RelationNotFoundException- если нет отношения с данным идентификатором
getRelationTypeName
public String getRelationTypeName(String relationId) throws IllegalArgumentException, RelationNotFoundException
- Specified by:
-
getRelationTypeNameв интерфейсеRelationServiceMBean - Parameters:
-
relationId- идентификатор отношения - Returns:
- имя связанного типа отношения.
- Throws:
-
IllegalArgumentException- если параметр null -
RelationNotFoundException- если нет отношения с данным идентификатором
handleNotification
public void handleNotification(Notification notif, Object handback)
- Specified by:
-
handleNotificationв интерфейсеNotificationListener - Parameters:
-
notif- Уведомление. -
handback- Непрозрачный объект, который помогает слушателю сопоставить информацию о создателе MBean (может быть null).
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
- Specified by:
-
getNotificationInfoв интерфейсеNotificationBroadcaster - Returns:
- массив возможных уведомлений.
© 1993, 2023, 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/21/docs/api/java.management/javax/management/relation/RelationService.html