Класс 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 |
Обрабатывает обновление карты ролей службы отношений при обновлении заданной роли в заданном отношении. |
Методы, объявленные в классе 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. В этом случае данный метод должен вернуть ненулевой 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), он останется зарегистрированным.
Это может сбить с толку код, вызывающий createMBean() или registerMBean(), поскольку он может предположить, что регистрация MBean завершилась неудачей, если было выброшено такое исключение. Поэтому рекомендуется, по возможности, не выбрасывать исключения RuntimeException или ошибки в реализациях postRegister.
- Определено в:
-
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 с регистрации завершилось неудачей. Поэтому рекомендуется, по возможности, не выбрасывать исключения RuntimeException или ошибки в реализациях postDeregister.
- Определено в:
-
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 - Возвращает:
- ArrayList с именами типов связей (String)
getRoleInfos
public List<RoleInfo> getRoleInfos(String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
- Определено в:
-
getRoleInfosв интерфейсеRelationServiceMBean - Параметры:
-
relationTypeName— имя типа связи - Возвращает:
- ArrayList объектов 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
Роли инициализируются в соответствии со списком ролей, переданным в параметре. Роли, не инициализированные таким образом, получают пустой ArrayList объектов ObjectName.
Отправляется уведомление 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 в качестве связи, он должен соответствовать следующим требованиям:
— реализовывать интерфейс 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— если:— число ссылок на MBean в роли меньше ожидаемой минимальной степени
— число ссылок на MBean в роли превышает ожидаемую максимальную степень
— один из MBean, на который ссылается значение, не является объектом ожидаемого для этой роли класса MBean
— указанный для роли MBean не существует
-
RoleNotFoundException— если для роли, отсутствующей в типе связи, задано значение
isRelationMBean
public ObjectName isRelationMBean(String relationId) throws IllegalArgumentException, RelationNotFoundException
- Определено в:
-
isRelationMBeanв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор связи - Возвращает:
- ObjectName соответствующего MBean-связи или null, если связь не является MBean.
- Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationNotFoundException— если связь с указанным идентификатором отсутствует
isRelation
public String isRelation(ObjectName objectName) throws IllegalArgumentException
- Определено в:
-
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 объектов String
checkRoleReading
public Integer checkRoleReading(String roleName, String relationTypeName) throws IllegalArgumentException, RelationTypeNotFoundException
- Определено в:
-
checkRoleReadingв интерфейсеRelationServiceMBean - Параметры:
-
roleName— имя проверяемой роли -
relationTypeName— имя типа связи - Возвращает:
- Integer, содержащий целое число, соответствующее возможным проблемам, представленным константами в 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— флаг, указывающий, что проверка выполняется при инициализации роли и проверять доступ на запись не требуется. - Возвращает:
- 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
- Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationTypeNotFoundException— если тип связи неизвестен
sendRelationCreationNotification
public void sendRelationCreationNotification(String relationId) throws IllegalArgumentException, RelationNotFoundException
— RelationNotification.RELATION_BASIC_CREATION, если связь является объектом, внутренним для службы связей
— RelationNotification.RELATION_MBEAN_CREATION, если связь является MBean, добавленным в качестве связи.
Источником уведомления является сама служба связей.
Вызывается методами createRelation() и addRelation() службы связей.
- Определено в:
-
sendRelationCreationNotificationв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор обновлённой связи - Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationNotFoundException— если связи с указанным идентификатором не существует
sendRoleUpdateNotification
public void sendRoleUpdateNotification(String relationId, Role newRole, List<ObjectName> oldValue) throws IllegalArgumentException, RelationNotFoundException
— RelationNotification.RELATION_BASIC_UPDATE, если связь является объектом, внутренним для службы связей
— RelationNotification.RELATION_MBEAN_UPDATE, если связь является MBean, добавленным в качестве связи.
Источником уведомления является сама служба связей.
Вызывается методами setRole() (для указанной роли) и setRoles() (для каждой роли) MBean-связи (реализация предоставлена в классе RelationSupport).
Также вызывается методами setRole() (для указанной роли) и setRoles() (для каждой роли) службы связей.
- Определено в:
-
sendRoleUpdateNotificationв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор обновлённой связи -
newRole— новая роль (имя и новое значение) -
oldValue— прежнее значение роли (список объектов ObjectName) - Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationNotFoundException— если связи с указанным идентификатором не существует
sendRelationRemovalNotification
public void sendRelationRemovalNotification(String relationId, List<ObjectName> unregMBeanList) throws IllegalArgumentException, RelationNotFoundException
— RelationNotification.RELATION_BASIC_REMOVAL, если связь является объектом, внутренним для службы связей
— RelationNotification.RELATION_MBEAN_REMOVAL, если связь является MBean, добавленным в качестве связи.
Источником уведомления является сама служба связей.
Вызывается методом removeRelation() службы связей.
- Определено в:
-
sendRelationRemovalNotificationв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор обновлённой связи -
unregMBeanList— список ObjectName объектов MBean, которые предполагается снять с регистрации вследствие удаления связи (может быть равен null) - Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationNotFoundException— если связи с указанным идентификатором не существует
updateRoleMap
public void updateRoleMap(String relationId, Role newRole, List<ObjectName> oldValue) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationNotFoundException
Вызывается методами setRole() (для указанной роли) и setRoles() (для каждой роли) MBean-связи (реализация предоставлена в классе RelationSupport).
Также вызывается методами setRole() (для указанной роли) и setRoles() (для каждой роли) службы связей.
Чтобы служба связей могла поддерживать согласованность (в случае снятия MBean с регистрации) и выполнять запросы, этот метод необходимо вызывать при обновлении роли.
- Определено в:
-
updateRoleMapв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор обновлённой связи -
newRole— новая роль (имя и новое значение) -
oldValue— прежнее значение роли (список объектов ObjectName) - Вызывает исключение:
-
IllegalArgumentException— если параметр равен null -
RelationServiceNotRegisteredException— если служба связей не зарегистрирована на сервере MBean -
RelationNotFoundException— если связь с указанным идентификатором отсутствует.
removeRelation
public void removeRelation(String relationId) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
Отправляется уведомление RelationNotification следующего типа:
— RelationNotification.RELATION_BASIC_REMOVAL, если связь была только внутренней для службы связей
— RelationNotification.RELATION_MBEAN_REMOVAL, если связь зарегистрирована как MBean.
Для MBean, на которые ссылается такая связь, никаких действий не выполняется.
- Определено в:
-
removeRelationв интерфейсеRelationServiceMBean - Параметры:
-
relationId— идентификатор удаляемой связи - Вызывает исключение:
-
RelationServiceNotRegisteredException— если служба связей не зарегистрирована на сервере MBean -
IllegalArgumentException— если параметр равен null -
RelationNotFoundException— если связь с указанным идентификатором не существует
purgeRelations
public void purgeRelations() throws RelationServiceNotRegisteredException
В зависимости от значения purgeFlag этот метод либо вызывается автоматически при получении уведомления о снятии с регистрации MBean, на который ссылается связь (если флаг установлен в true), либо не вызывается (если флаг установлен в false).
В этом случае пользователь должен вызвать его самостоятельно, чтобы поддерживать согласованность связей. Следует учитывать, что если MBean снят с регистрации, а очистка не выполнена немедленно, то повторное использование ObjectName и назначение его другому MBean, на который ссылается связь, может привести к проблемам: при ручном вызове purgeRelations() ObjectName будет рассматриваться как соответствующий снятому с регистрации MBean, а не новому.
Поведение зависит от кратности роли, в которой указан MBean, снятый с регистрации:
— если удаление одной ссылки на MBean в роли уменьшает число ссылок ниже минимальной степени, связь необходимо удалить.
— если после удаления ссылки на MBean число оставшихся ссылок по-прежнему входит в допустимый диапазон кратности, связь сохраняется и обновляется вызовом её обратного вызова handleMBeanUnregistration().
- Определено в:
-
purgeRelationsв интерфейсеRelationServiceMBean - Вызывает исключение:
-
RelationServiceNotRegisteredException— если служба связей не зарегистрирована на сервере MBean.
findReferencingRelations
public Map<String, List<String>> findReferencingRelations(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
Это соответствует операциям CIM «References» и «ReferenceNames».
- Указано в:
-
findReferencingRelationsв интерфейсеRelationServiceMBean - Параметры:
-
mbeanName- ObjectName MBean -
relationTypeName- может быть null; если указано, при поиске будут учитываться только отношения этого типа. В противном случае учитываются все типы отношений. -
roleName- может быть null; если указано, будут возвращены только отношения, в которых MBean является объектом ссылки в этой роли. В противном случае учитываются все роли. - Возвращает:
- HashMap, ключами которого являются идентификаторы отношений, в которых MBean является объектом ссылки, а значением для каждого ключа — ArrayList имён ролей (поскольку MBean может быть объектом ссылки в нескольких ролях одного отношения).
- Вызывает исключение:
-
IllegalArgumentException- если параметр равен null
findAssociatedMBeans
public Map<ObjectName, List<String>> findAssociatedMBeans(ObjectName mbeanName, String relationTypeName, String roleName) throws IllegalArgumentException
Это соответствует операциям CIM Associators и AssociatorNames.
- Указано в:
-
findAssociatedMBeansв интерфейсеRelationServiceMBean - Параметры:
-
mbeanName- ObjectName MBean -
relationTypeName- может быть null; если указано, при поиске будут учитываться только отношения этого типа. В противном случае учитываются все типы отношений. -
roleName- может быть null; если указано, будут учитываться только отношения, в которых MBean является объектом ссылки в этой роли. В противном случае учитываются все роли. - Возвращает:
- HashMap, ключами которого являются ObjectName 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- если:- роли с указанным именем не существует
или
- роль недоступна для чтения.
- См. также:
getRoles
public RoleResult getRoles(String relationId, String[] roleNameArray) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
- Указано в:
-
getRolesв интерфейсеRelationServiceMBean - Параметры:
-
relationId- идентификатор отношения -
roleNameArray- массив имён ролей, значения которых нужно получить - Возвращает:
- объект RoleResult, включающий RoleList (для успешно полученных ролей) и RoleUnresolvedList (для ролей, значения которых не удалось получить).
- Вызывает исключение:
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в MBean Server -
IllegalArgumentException- если параметр равен null -
RelationNotFoundException- если отношения с указанным идентификатором не существует - См. также:
getAllRoles
public RoleResult getAllRoles(String relationId) throws IllegalArgumentException, RelationNotFoundException, RelationServiceNotRegisteredException
- Указано в:
-
getAllRolesв интерфейсеRelationServiceMBean - Параметры:
-
relationId- идентификатор отношения - Возвращает:
- объект RoleResult, включающий RoleList (для успешно полученных ролей) и RoleUnresolvedList (для ролей, недоступных для чтения).
- Вызывает исключение:
-
IllegalArgumentException- если параметр равен null -
RelationNotFoundException- если отношения с указанным идентификатором не существует -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в MBean Server
getRoleCardinality
public Integer getRoleCardinality(String relationId, String roleName) throws IllegalArgumentException, RelationNotFoundException, RoleNotFoundException
- Указано в:
-
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 Server -
IllegalArgumentException- если параметр равен null -
RelationNotFoundException- если отношения с указанным идентификатором не существует -
RoleNotFoundException- если роль не существует или недоступна для записи -
InvalidRoleValueException- если указанное значение роли недопустимо:- количество MBean, на которые ссылается указанное значение, меньше ожидаемой минимальной степени
или
- количество MBean, на которые ссылается указанное значение, превышает ожидаемую максимальную степень
или
- один из MBean, на которые ссылается значение, не является объектом ожидаемого для этой роли класса MBean
или
- указанный для этой роли MBean не существует
- См. также:
setRoles
public RoleResult setRoles(String relationId, RoleList roleList) throws RelationServiceNotRegisteredException, IllegalArgumentException, RelationNotFoundException
Роли будут проверены на соответствие их определениям, заданным в типе отношения.
Служба отношений отслеживает изменения, чтобы поддерживать согласованность отношений при отмене регистрации MBean, на которые имеются ссылки.
- Указано в:
-
setRolesв интерфейсеRelationServiceMBean - Параметры:
-
relationId- идентификатор отношения -
roleList- список задаваемых ролей - Возвращает:
- объект RoleResult, включающий RoleList (для успешно заданных ролей) и RoleUnresolvedList (для ролей, которые не удалось задать).
- Вызывает исключение:
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в MBean Server -
IllegalArgumentException- если параметр равен null -
RelationNotFoundException- если отношения с указанным идентификатором не существует - См. также:
getReferencedMBeans
public Map<ObjectName, List<String>> getReferencedMBeans(String relationId) throws IllegalArgumentException, RelationNotFoundException
- Указано в:
-
getReferencedMBeansв интерфейсеRelationServiceMBean - Параметры:
-
relationId- идентификатор отношения - Возвращает:
- HashMap, сопоставляющий:
ObjectName -> ArrayList String (имён ролей)
- Вызывает исключение:
-
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)
- Указано в:
-
handleNotificationв интерфейсеNotificationListener - Параметры:
-
notif- уведомление. -
handback- непрозрачный объект, помогающий слушателю сопоставить сведения об источнике MBean (может быть null).
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
- Указано в:
-
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://docs.oracle.com/en/java/javase/25/docs/api/java.management/javax/management/relation/RelationService.html