Класс 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), для доступа к его службе отношений.
- C:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
RelationSupport |
Создаёт объект RelationSupport. |
RelationSupport |
Создаёт объект RelationSupport. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
RoleResult |
getAllRoles() |
Возвращает все роли, присутствующие в отношении. |
Map<ObjectName, |
getReferencedMBeans() |
Получает MBean, на которые ссылаются различные роли отношения. |
String |
getRelationId() |
Возвращает идентификатор отношения (используется для уникальной идентификации отношения внутри службы отношений). |
ObjectName |
getRelationServiceName() |
Возвращает имя объекта ObjectName службы отношений, обрабатывающей отношение. |
String |
getRelationTypeName() |
Возвращает имя связанного типа отношения. |
List<ObjectName> |
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— имя роли - Возвращает:
- список 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
Служба Relation вызовет этот метод, чтобы позволить связи выполнить действия, отражающие последствия такого удаления.
ВНИМАНИЕ. пользователю не следует вызывать этот метод.
Текущая реализация заключается в установке роли со значением её текущего состояния (список ObjectNames ссылающихся MBean) без удалённого.
- Указано в:
-
handleMBeanUnregistrationв интерфейсеRelation - Параметры:
-
objectName- ObjectName удалённого MBean -
roleName- имя роли, в которой ссылаются на MBean - Исключения:
-
IllegalArgumentException- если параметр null -
RoleNotFoundException- если роль не существует в связи или не является доступной для записи -
InvalidRoleValueException- если значение роли не соответствует связанной информации о роли (это никогда не произойдёт, когда вызов осуществляется из службы Relation) -
RelationServiceNotRegisteredException- если служба Relation не зарегистрирована в сервере MBean -
RelationTypeNotFoundException- если тип связи не был объявлен в службе Relation. -
RelationNotFoundException- если этот метод вызван для MBean связи, не добавленной в службу Relation.
getReferencedMBeans
public Map<ObjectName,List<String>> getReferencedMBeans()
- Указано в:
-
getReferencedMBeansв интерфейсеRelation - Возвращает:
- a HashMap отображающий:
ObjectName -> ArrayList строк (имена ролей)
getRelationTypeName
public String getRelationTypeName()
- Указано в:
-
getRelationTypeNameв интерфейсеRelation - Возвращает:
- имя типа связи.
getRelationServiceName
public ObjectName getRelationServiceName()
- Указано в:
-
getRelationServiceNameв интерфейсеRelation - Возвращает:
- ObjectName службы Relation.
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, если параметр 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), MBean останется зарегистрированным.
Это может быть запутанным для кода, вызывающего 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.TRUE, если объект всё ещё обрабатывается службой Relation, иBoolean.FALSEв противном случае.
setRelationServiceManagementFlag
public void setRelationServiceManagementFlag(Boolean flag) throws IllegalArgumentException
RelationSupportMBeanУказывает, обрабатывается ли эта связь службой Relation.
ВНИМАНИЕ, этот метод должен быть доступен, поскольку служба Relation будет получать доступ к связи через свой интерфейс управления. Рекомендуется НЕ использовать этот метод. Его использование не влияет на регистрацию объекта связи в службе Relation, но даст ложную информацию о нём!
- Указано в:
-
setRelationServiceManagementFlagв интерфейсеRelationSupportMBean - Параметры:
-
flag- обрабатывается ли связь службой Relation. - Исключения:
-
IllegalArgumentException- если параметр null
© 1993, 2021, 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/17/docs/api/java.management/javax/management/relation/RelationSupport.html