Класс 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 |
Задает указанные роли. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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 - См. также:
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), из которого исключен 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 завершилась неудачно из-за выброшенного исключения. Поэтому рекомендуется по возможности не выбрасывать исключения Runtime Exception или Error в реализациях 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 завершилась неудачно. Поэтому рекомендуется по возможности не выбрасывать исключения 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
© 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.