Spec-Zone.ru › OpenJDK 27

Класс RelationSupport

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

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

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

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

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

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

Начиная с:
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()
Возвращает идентификатор отношения (используется для однозначной идентификации отношения в службе отношений).
ObjectName getRelationServiceName()
Возвращает ObjectName службы отношений, обрабатывающей отношение.
String getRelationTypeName()
Возвращает имя связанного типа отношения.
List<ObjectName> getRole(String roleName)
Получает значение роли с заданным именем.
Integer getRoleCardinality(String roleName)
Возвращает число MBean, на которые в данный момент имеются ссылки в заданной роли.
RoleResult getRoles(String[] roleNameArray)
Получает значения ролей с заданными именами.
void handleMBeanUnregistration(ObjectName objectName, String roleName)
Обратный вызов службы отношений при отмене регистрации MBean, на который имеется ссылка в роли.
Boolean isInRelationService()
Возвращает внутренний флаг, указывающий, обрабатывается ли объект по-прежнему службой отношений.
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)
Указывает, обрабатывается ли это отношение службой отношений.
void setRole(Role role)
Задает указанную роль.
RoleResult setRoles(RoleList list)
Задает указанные роли.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и будет удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного промежутка реального времени.

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

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(Role)

getRoles

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

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

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

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 отношения не добавлен в Службу отношений.
См. также:
  • getRoles(String[])

handleMBeanUnregistration

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

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

ВНИМАНИЕ. Предполагается, что пользователь не вызывает этот метод.

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

Определен в:
handleMBeanUnregistration в интерфейсе Relation
Параметры:
objectName - ObjectName MBean, регистрация которого отменена
roleName - имя роли, в которой указан MBean
Исключения:
IllegalArgumentException - если параметр равен null
RoleNotFoundException - если роль не существует в отношении или недоступна для записи
InvalidRoleValueException - если значение роли не соответствует связанной информации о роли (при вызове из Службы отношений этого никогда не происходит)
RelationServiceNotRegisteredException - если Служба отношений не зарегистрирована на сервере MBean
RelationTypeNotFoundException - если тип отношения не объявлен в Службе отношений.
RelationNotFoundException - если этот метод вызван для MBean отношения, не добавленного в Службу отношений.

getReferencedMBeans

public Map<ObjectName, List<String>> getReferencedMBeans()
Возвращает MBean, на которые ссылаются различные роли отношения.
Определен в:
getReferencedMBeans в интерфейсе Relation
Возвращает:
HashMap, содержащий соответствия:

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

getRelationTypeName

public String getRelationTypeName()
Возвращает имя связанного типа отношения.
Определен в:
getRelationTypeName в интерфейсе Relation
Возвращает:
имя типа отношения.

getRelationServiceName

public ObjectName getRelationServiceName()
Возвращает ObjectName Службы отношений, обрабатывающей отношение.
Определен в:
getRelationServiceName в интерфейсе Relation
Возвращает:
ObjectName Службы отношений.

getRelationId

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

preRegister

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

postRegister

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

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

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

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

preDeregister

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

postDeregister

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

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

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

Определен в:
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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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