Spec-Zone.ru › OpenJDK 24

Класс RelationSupport

java.lang.Object
javax.management.relation.RelationSupport
Все реализованные интерфейсы:
MBeanRegistration, Relation, RelationSupportMBean
public class RelationSupport extends Object implements RelationSupportMBean, MBeanRegistration
Объект RelationSupport используется внутренне службой Relations для представления простых отношений (только роли, без свойств или методов), с неограниченным числом ролей любого типа отношения. Как внутреннее представление, он не доступен пользователю.

Класс RelationSupport соответствует шаблонам проектирования стандартных MBean. Поэтому пользователь может сам создать объект RelationSupport в качестве MBean (поскольку он следует шаблонам проектирования MBean), зарегистрировать его в сервере MBean, а затем добавить его в службу Relations.

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

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

RelationSupport реализует интерфейс Relation (для обработки службой Relations).

Он также реализует интерфейс MBeanRegistration, чтобы иметь возможность получить сервер MBean, где он зарегистрирован (если зарегистрирован как MBean), чтобы получить доступ к его службе Relations.

С момента:
1.5

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

Конструктор Описание
RelationSupport(String relationId, ObjectName relationServiceName, String relationTypeName, RoleList list)
Создаёт объект RelationSupport.
RelationSupport(String relationId, ObjectName relationServiceName, MBeanServer relationServiceMBeanServer, String relationTypeName, RoleList list)
Создаёт объект RelationSupport.

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

Модификатор и тип Метод Описание
RoleResult getAllRoles()
Возвращает все присутствующие в отношении роли.
Map<ObjectName, List<String>> getReferencedMBeans()
Получает MBean, ссылающиеся на различные роли отношения.
String getRelationId()
Возвращает идентификатор отношения (используется для уникальной идентификации отношения внутри службы Relations).
ObjectName getRelationServiceName()
Возвращает ObjectName службы Relations, обрабатывающей отношение.
String getRelationTypeName()
Возвращает имя связанного типа отношения.
List<ObjectName> getRole(String roleName)
Получает значение роли для заданного имени роли.
Integer getRoleCardinality(String roleName)
Возвращает количество MBean, в данный момент ссылающихся на заданную роль.
RoleResult getRoles(String[] roleNameArray)
Получает значения ролей с заданными именами.
void handleMBeanUnregistration(ObjectName objectName, String roleName)
Обратный вызов, используемый службой Relations, когда MBean, на который ссылается роль, аннулируется.
Boolean isInRelationService()
Возвращает внутренний флаг, указывающий, обрабатывается ли объект службой Relations.
void postDeregister()
Позволяет MBean выполнить любые необходимые операции после того, как он был аннулирован на сервере MBean.
void postRegister(Boolean registrationDone)
Позволяет MBean выполнить любые необходимые операции после регистрации на сервере MBean или после неудачной регистрации.
void preDeregister()
Позволяет MBean выполнить любые необходимые операции перед аннулированием на сервере MBean.
ObjectName preRegister(MBeanServer server, ObjectName name)
Позволяет MBean выполнить необходимые операции перед регистрацией на сервере MBean.
RoleList retrieveAllRoles()
Возвращает все роли в отношении без проверки режима чтения.
void setRelationServiceManagementFlag(Boolean flag)
Указывает, обрабатывается ли данное отношение службой Relations.
void setRole(Role role)
Устанавливает заданную роль.
RoleResult setRoles(RoleList list)
Устанавливает заданные роли.

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

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

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

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
См. также:
  • setRole(javax.management.relation.Role)

getRoles

public RoleResult getRoles(String[] roleNameArray) throws IllegalArgumentException, RelationServiceNotRegisteredException
Возвращает значения ролей с заданными именами.

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

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

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
Возвращает количество MBean, в настоящее время ссылающихся на данную роль.
Определено в:
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 - если отношение не добавлено в службу отношений.
См. также:
  • getRole(java.lang.String)

setRoles

public RoleResult setRoles(RoleList list) throws IllegalArgumentException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
Устанавливает заданные роли.

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

Отправка одного уведомления (RelationNotification с типом RELATION_BASIC_UPDATE или RELATION_MBEAN_UPDATE, в зависимости от того, является ли отношение MBean или нет) на каждую обновлённую роль.

Specified by:
setRoles in interface Relation
Parameters:
list - список ролей, которые нужно установить
Returns:
объект RoleResult, содержащий список ролей (для успешно установленных ролей) и список неразрешённых ролей (для ролей, которые не были установлены).
Throws:
IllegalArgumentException - если список ролей равен null
RelationServiceNotRegisteredException - если служба Relation не зарегистрирована в сервере MBean
RelationTypeNotFoundException - если тип отношения не объявлен в службе Relation.
RelationNotFoundException - если MBean отношения не добавлен в службу Relation.
See Also:
  • getRoles(java.lang.String[])

handleMBeanUnregistration

public void handleMBeanUnregistration(ObjectName objectName, String roleName) throws IllegalArgumentException, RoleNotFoundException, InvalidRoleValueException, RelationServiceNotRegisteredException, RelationTypeNotFoundException, RelationNotFoundException
Обработчик, используемый службой Relation, когда MBean, указанный в роли, аннулируется.

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

ВНИМАНИЕ. Пользователю не ожидается вызывать этот метод.

Текущая реализация заключается в установке роли с её текущим значением (списком ObjectName указанных MBean) без аннулированного.

Specified by:
handleMBeanUnregistration in interface Relation
Parameters:
objectName - ObjectName аннулированного MBean
roleName - имя роли, в которой указан MBean
Throws:
IllegalArgumentException - если параметр равен null
RoleNotFoundException - если роль не существует в отношении или не может быть изменена
InvalidRoleValueException - если значение роли не соответствует связанной информации о роли (это никогда не произойдёт при вызове из службы Relation)
RelationServiceNotRegisteredException - если служба Relation не зарегистрирована в сервере MBean
RelationTypeNotFoundException - если тип отношения не объявлен в службе Relation.
RelationNotFoundException - если этот метод вызывается для MBean отношения, не добавленного в службу Relation.

getReferencedMBeans

public Map<ObjectName, List<String>> getReferencedMBeans()
Возвращает MBean, указанные в различных ролях отношения.
Specified by:
getReferencedMBeans in interface Relation
Returns:
HashMap, сопоставляющая:

ObjectName -> ArrayList имён ролей

getRelationTypeName

public String getRelationTypeName()
Возвращает имя связанного типа отношения.
Specified by:
getRelationTypeName in interface Relation
Returns:
имя типа отношения.

getRelationServiceName

public ObjectName getRelationServiceName()
Возвращает ObjectName службы Relation, обрабатывающей отношение.
Specified by:
getRelationServiceName in interface Relation
Returns:
ObjectName службы Relation.

getRelationId

public String getRelationId()
Возвращает идентификатор отношения (используется для уникальной идентификации отношения внутри службы Relation).
Specified by:
getRelationId in interface Relation
Returns:
идентификатор отношения.

preRegister

public ObjectName preRegister(MBeanServer server, ObjectName name) throws Exception
Описание скопировано из интерфейса: MBeanRegistration
Позволяет MBean выполнить любые необходимые операции перед регистрацией в сервере MBean. Если имя MBean не указано, MBean может предоставить имя для его регистрации. Если возникает какое-либо исключение, MBean не будет зарегистрирован в сервере MBean.
Specified by:
preRegister in interface MBeanRegistration
Parameters:
server - сервер MBean, в котором будет зарегистрирован MBean.
name - имя объекта MBean. Это значение равно null, если параметр name в одном из методов createMBean или registerMBean интерфейса MBeanServer равен null. В этом случае этот метод должен вернуть не null ObjectName для нового MBean.
Returns:
Имя, под которым должен быть зарегистрирован MBean. Это значение не должно быть null. Если параметр name не равен null, обычно, но не обязательно, это возвращаемое значение.
Throws:
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 или ошибки, если это возможно.

Specified by:
postRegister in interface MBeanRegistration
Parameters:
registrationDone - Указывает, зарегистрирован ли MBean в сервере MBean успешно или нет. Значение false означает, что регистрация завершилась неудачно.

preDeregister

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

postDeregister

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

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

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

Specified by:
postDeregister in interface MBeanRegistration

isInRelationService

public Boolean isInRelationService()
Возвращает внутренний флаг, указывающий, обрабатывается ли объект службой Relation.
Specified by:
isInRelationService in interface RelationSupportMBean
Returns:
логическое значение, равное Boolean.TRUE, если объект всё ещё обрабатывается службой Relation, и 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://download.java.net/java/early_access/jdk24/docs/api/java.management/javax/management/relation/RelationSupport.html

Spec-Zone.ru

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