Класс RelationSupport
- Все реализованные интерфейсы:
MBeanRegistration, Relation, RelationSupportMBean
public class RelationSupport extends Object implements RelationSupportMBean, MBeanRegistration
Класс RelationSupport соответствует шаблонам проектирования стандартного MBean. Поэтому пользователь может создать объект RelationSupport самостоятельно в качестве MBean (так как он соответствует шаблонам проектирования MBean), зарегистрировать его на сервере MBean, а затем добавить в службу отношений.
Пользователь также может при создании собственного класса MBean отношения унаследовать его от RelationSupport, чтобы получить реализации требуемых интерфейсов (см. ниже).
Кроме того, пользовательский класс MBean отношения может содержать объект RelationSupport в качестве поля и реализовывать требуемые интерфейсы, делегируя все вызовы этому полю.
RelationSupport реализует интерфейс Relation (для обработки службой отношений).
Он также реализует интерфейс MBeanRegistration, чтобы получить сервер MBean, на котором он зарегистрирован (если зарегистрирован как MBean), и получить доступ к его службе отношений.
- Начиная с:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RelationSupport |
Создает объект RelationSupport. |
RelationSupport |
Создает объект RelationSupport. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
RoleResult |
getAllRoles() |
Возвращает все роли, присутствующие в отношении. |
Map |
getReferencedMBeans() |
Получает MBean, на которые ссылаются различные роли отношения. |
String |
getRelationId() |
Возвращает идентификатор отношения (используется для уникальной идентификации отношения в службе отношений). |
ObjectName |
getRelationServiceName() |
Возвращает ObjectName службы отношений, обрабатывающей отношение. |
String |
getRelationTypeName() |
Возвращает имя связанного типа отношений. |
List |
getRole |
Получает значение роли с заданным именем. |
Integer |
getRoleCardinality |
Возвращает количество MBean, на которые в данный момент ссылается заданная роль. |
RoleResult |
getRoles |
Получает значения ролей с заданными именами. |
void |
handleMBeanUnregistration |
Обратный вызов службы отношений при отмене регистрации MBean, на который ссылается роль. |
Boolean |
isInRelationService() |
Возвращает внутренний флаг, указывающий, обрабатывается ли объект по-прежнему службой отношений. |
void |
postDeregister() |
Позволяет MBean выполнить необходимые действия после отмены его регистрации на сервере MBean. |
void |
postRegister |
Позволяет MBean выполнить необходимые действия после его регистрации на сервере MBean или после неудачной попытки регистрации. |
void |
preDeregister() |
Позволяет MBean выполнить необходимые действия перед отменой его регистрации сервером MBean. |
ObjectName |
preRegister |
Позволяет MBean выполнить необходимые действия перед регистрацией на сервере MBean. |
RoleList |
retrieveAllRoles() |
Возвращает все роли отношения без проверки режима чтения. |
void |
setRelationServiceManagementFlag |
Указывает, обрабатывается ли это отношение службой отношений. |
void |
setRole |
Задает указанную роль. |
RoleResult |
setRoles |
Задает указанные роли. |
Подробное описание конструкторов
RelationSupport
public RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport. Этот конструктор следует использовать, когда пользователь регистрирует объект RelationSupport как MBean или создает пользовательский MBean отношения, класс которого расширяет RelationSupport.
На уровне службы отношений ничего не выполняется: объект RelationSupport не добавляется в RelationService, и не выполняются проверки корректности переданных значений. Объект создается всегда, ЗА ИСКЛЮЧЕНИЕМ следующих случаев:
- любой из обязательных параметров равен null.
- одно и то же имя используется для двух ролей.
Чтобы обрабатываться как отношение, объект RelationSupport необходимо добавить в службу отношений с помощью метода addRelation() службы отношений.
- Параметры:
-
relationId- идентификатор отношения, используемый для идентификации отношения в службе отношений.Должен быть уникальным в данной службе отношений.
-
relationServiceName- ObjectName службы отношений, в которой будет зарегистрировано отношение.Этот параметр обязателен, поскольку служба отношений располагает сведениями об определении типа данного отношения и поэтому может проверять операции обновления (set).
-
relationTypeName- имя типа отношений.Ожидается, что этот тип уже создан в данной службе отношений.
-
list- список ролей (объектов Role) для инициализации отношения. Может бытьnull.Должен соответствовать сведениям об отношениях в связанном типе отношений.
- Исключения:
-
InvalidRoleValueException- если одно и то же имя используется для двух ролей. -
IllegalArgumentException- если любой из обязательных параметров (идентификатор отношения, ObjectName службы отношений или имя типа отношений) равенnull.
RelationSupport
public RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list) throws InvalidRoleValueException, IllegalArgumentException
RelationSupport. Этот конструктор следует использовать, когда пользовательский MBean отношения реализует ожидаемые от отношения интерфейсы, делегируя вызовы объекту RelationSupport.
Этому объекту необходимо знать службу отношений, которая должна обрабатывать отношение. Поэтому ему необходимо знать сервер MBean, на котором зарегистрирована служба отношений.
Согласно ограничению, MBean отношения должен быть зарегистрирован на том же сервере MBean, что и служба отношений, которая должна его обрабатывать. Поэтому пользовательский MBean отношения необходимо создать и зарегистрировать, а затем можно создать обернутый объект RelationSupport на идентифицированном сервере MBean.
На уровне службы отношений ничего не выполняется: объект RelationSupport не добавляется в RelationService, и не выполняются проверки корректности переданных значений. Объект создается всегда, ЗА ИСКЛЮЧЕНИЕМ следующих случаев:
- любой из обязательных параметров равен null.
- одно и то же имя используется для двух ролей.
Чтобы обрабатываться как отношение, объект RelationSupport необходимо добавить в службу отношений с помощью метода addRelation() службы отношений.
- Параметры:
-
relationId- идентификатор отношения, используемый для идентификации отношения в службе отношений.Должен быть уникальным в данной службе отношений.
-
relationServiceName- ObjectName службы отношений, в которой будет зарегистрировано отношение.Этот параметр обязателен, поскольку служба отношений располагает сведениями об определении типа данного отношения и поэтому может проверять операции обновления (set).
-
relationServiceMBeanServer- сервер MBean, на котором зарегистрирован или будет зарегистрирован обертывающий MBean.Ожидается, что это сервер MBean, на котором зарегистрирована или будет зарегистрирована служба отношений.
-
relationTypeName- имя типа отношений.Ожидается, что этот тип уже создан в данной службе отношений.
-
list- список ролей (объектов Role) для инициализации отношения. Может бытьnull.Должен соответствовать сведениям об отношениях в связанном типе отношений.
- Исключения:
-
InvalidRoleValueException- если одно и то же имя используется для двух ролей. -
IllegalArgumentException- если любой из обязательных параметров (идентификатор отношения, ObjectName службы отношений, сервер MBean службы отношений или имя типа отношений) равенnull.
Подробное описание методов
getRole
public List<ObjectName> getRole(String roleName) throws IllegalArgumentException, RoleNotFoundException, RelationServiceNotRegisteredException
Проверяет, существует ли роль и доступна ли она для чтения согласно типу отношений.
- Определено в:
-
getRoleв интерфейсеRelation - Параметры:
-
roleName- имя роли - Возвращает:
- ArrayList объектов ObjectName, составляющий значение роли
- Исключения:
-
IllegalArgumentException- если имя роли равно null -
RoleNotFoundException- если:- роли с заданным именем не существует
- роль недоступна для чтения.
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean - См. также:
getRoles
public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException
Для каждой роли проверяет, существует ли она и доступна ли для чтения согласно типу отношений.
- Определено в:
-
getRolesв интерфейсеRelation - Параметры:
-
roleNameArray- массив имен извлекаемых ролей - Возвращает:
- объект RoleResult, содержащий RoleList (для успешно извлеченных ролей) и RoleUnresolvedList (для ролей, которые не удалось извлечь).
- Исключения:
-
IllegalArgumentException- если имя роли равно null -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean - См. также:
getAllRoles
public RoleResult getAllRoles() throws RelationServiceNotRegisteredException
- Определено в:
-
getAllRolesв интерфейсеRelation - Возвращает:
- объект RoleResult, содержащий RoleList (для успешно извлеченных ролей) и RoleUnresolvedList (для ролей, недоступных для чтения).
- Исключения:
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean
retrieveAllRoles
public RoleList retrieveAllRoles()
- Определено в:
-
retrieveAllRolesв интерфейсеRelation - Возвращает:
- объект RoleList
getRoleCardinality
public Integer getRoleCardinality(String roleName) throws IllegalArgumentException, RoleNotFoundException
- Определено в:
-
getRoleCardinalityв интерфейсеRelation - Параметры:
-
roleName- имя роли - Возвращает:
- количество MBean, на которые в данный момент ссылается эта роль
- Исключения:
-
IllegalArgumentException- если имя роли равно null -
RoleNotFoundException- если роли с заданным именем не существует
setRole
public void setRole(Role role) throws IllegalArgumentException, RoleNotFoundException, RelationTypeNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationNotFoundException
Роль будет проверена на соответствие определению этой роли, указанному в типе отношений данного отношения.
Будет отправлено уведомление (RelationNotification типа RELATION_BASIC_UPDATE или RELATION_MBEAN_UPDATE — в зависимости от того, является ли отношение MBean).
- Определено в:
-
setRoleв интерфейсеRelation - Параметры:
-
role- задаваемая роль (имя и новое значение) - Исключения:
-
IllegalArgumentException- если роль равна null -
RoleNotFoundException- если роли с указанным именем не существует или роль недоступна для записи (при инициализации роли проверка режима доступа на запись не выполняется) -
InvalidRoleValueException- если предоставленное значение роли недопустимо, то есть:- число MBean, на которые ссылается указанное значение, меньше ожидаемой минимальной степени
- число MBean, на которые ссылается предоставленное значение, превышает ожидаемую максимальную степень
- один из MBean, на которые ссылается значение, не является объектом ожидаемого для этой роли класса MBean
- предоставленный для этой роли MBean не существует
-
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean -
RelationTypeNotFoundException- если тип отношений не был объявлен в службе отношений -
RelationNotFoundException- если отношение не было добавлено в службу отношений. - См. также:
setRoles
public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
Роли будут проверены на соответствие определениям этих ролей, указанным в типе отношений данного отношения.
Для каждой обновленной роли будет отправлено уведомление (RelationNotification типа RELATION_BASIC_UPDATE или RELATION_MBEAN_UPDATE — в зависимости от того, является ли отношение MBean).
- Определено в:
-
setRolesв интерфейсеRelation - Параметры:
-
list- список задаваемых ролей - Возвращает:
- объект RoleResult, содержащий RoleList (для успешно заданных ролей) и RoleUnresolvedList (для ролей, которые не удалось задать).
- Исключения:
-
IllegalArgumentException- если список ролей равен null -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean -
RelationTypeNotFoundException- если тип отношений не был объявлен в службе отношений. -
RelationNotFoundException- если MBean отношения не был добавлен в службу отношений. - См. также:
handleMBeanUnregistration
public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
Служба отношений вызывает этот метод, чтобы отношение могло отреагировать на последствия такой отмены регистрации.
ВНИМАНИЕ. Предполагается, что пользователь не будет вызывать этот метод.
Текущая реализация задает роль с ее текущим значением (списком ObjectName объектов MBean, на которые она ссылается), за исключением объекта, регистрация которого отменена.
- Определено в:
-
handleMBeanUnregistrationв интерфейсеRelation - Параметры:
-
objectName- ObjectName MBean, регистрация которого отменена -
roleName- имя роли, в которой указан MBean - Исключения:
-
IllegalArgumentException- если параметр равен null -
RoleNotFoundException- если роль не существует в отношении или недоступна для записи -
InvalidRoleValueException- если значение роли не соответствует связанной с ней информации о роли (этого никогда не произойдет при вызове из службы отношений) -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована на сервере MBean -
RelationTypeNotFoundException- если тип отношений не был объявлен в службе отношений. -
RelationNotFoundException- если этот метод вызван для MBean отношения, не добавленного в службу отношений.
getReferencedMBeans
public Map<ObjectName, List<String>> getReferencedMBeans()
- Определено в:
-
getReferencedMBeansв интерфейсеRelation - Возвращает:
- объект HashMap, отображающий:
ObjectName -> ArrayList строк (имен ролей)
getRelationTypeName
public String getRelationTypeName()
- Определено в:
-
getRelationTypeNameв интерфейсеRelation - Возвращает:
- имя типа отношений.
getRelationServiceName
public ObjectName getRelationServiceName()
- Определено в:
-
getRelationServiceNameв интерфейсеRelation - Возвращает:
- ObjectName службы отношений.
getRelationId
public String getRelationId()
- Определено в:
-
getRelationIdв интерфейсеRelation - Возвращает:
- идентификатор отношения.
preRegister
public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
MBeanRegistration- Определено в:
-
preRegisterв интерфейсеMBeanRegistration - Параметры:
-
server- сервер MBean, на котором будет зарегистрирован MBean. -
name- имя объекта MBean. Это имя равно null, если параметр имени в одном из методов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 завершилась неудачно, если было выброшено такое исключение. Поэтому рекомендуется, чтобы реализации 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
isInRelationService
public Boolean isInRelationService()
- Определено в:
-
isInRelationServiceв интерфейсеRelationSupportMBean - Возвращает:
- значение Boolean, равное
Boolean.TRUE, если объект по-прежнему обрабатывается службой отношений, иBoolean.FALSEв противном случае.
setRelationServiceManagementFlag
public void setRelationServiceManagementFlag(Boolean flag) throws IllegalArgumentException
RelationSupportMBeanУказывает, обрабатывается ли это отношение службой отношений.
ВНИМАНИЕ! Этот метод необходимо предоставлять, поскольку служба отношений будет обращаться к отношению через интерфейс управления. НАСТОЯТЕЛЬНО НЕ РЕКОМЕНДУЕТСЯ использовать этот метод. Его использование не влияет на регистрацию объекта отношения в службе отношений, но приводит к предоставлению неверных сведений о нем!
- Определено в:
-
setRelationServiceManagementFlagв интерфейсеRelationSupportMBean - Параметры:
-
flag- указывает, обрабатывается ли отношение службой отношений. - Исключения:
-
IllegalArgumentException- если параметр равен null
© 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/RelationSupport.html