Класс RelationSupport
- java.lang.Object
-
- javax.management.relation.RelationSupport
- Все реализованные интерфейсы:
- MBeanRegistration, Relation, RelationSupportMBean
public class RelationSupport extends Object implements RelationSupportMBean, MBeanRegistration
Объект RelationSupport используется внутри службы Relation для представления простых отношений (только роли, без свойств или методов), с неограниченным количеством ролей любого типа отношения. Как внутреннее представление, он не предоставляется пользователю.
Класс RelationSupport соответствует паттернам проектирования стандартного MBean. Поэтому пользователь может сам создать объект RelationSupport в качестве MBean (так как он соответствует паттернам проектирования MBean), зарегистрировать его в сервере MBean, а затем добавить его в службу Relation.
Пользователь также может, при создании собственного класса отношения MBean, сделать его наследником RelationSupport, чтобы получить реализации необходимых интерфейсов (см. ниже).
Также возможно, что в пользовательском классе MBean отношения будет член, являющийся объектом RelationSupport, и реализовать необходимые интерфейсы, делегировав все этому члену.
RelationSupport реализует интерфейс Relation (для обработки службой Relation).
Он также реализует интерфейс MBeanRegistration, чтобы иметь возможность получить сервер MBean, где он зарегистрирован (если зарегистрирован как MBean), для доступа к его службе Relation.
- С тех пор:
- 1.5
Конструкторы
| Конструктор и описание |
|---|
RelationSupport(String relationId,
ObjectName relationServiceName,
MBeanServer relationServiceMBeanServer,
String relationTypeName,
RoleList list) Создаёт объект |
RelationSupport(String relationId,
ObjectName relationServiceName,
String relationTypeName,
RoleList list) Создаёт объект |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
RoleResult |
getAllRoles() Возвращает все роли, присутствующие в отношении. |
Map<ObjectName,List<String>> |
getReferencedMBeans() Получает MBean, на которые ссылаются различные роли отношения. |
String |
getRelationId() Возвращает идентификатор отношения (используется для уникальной идентификации отношения внутри службы Relation). |
ObjectName |
getRelationServiceName() Возвращает ObjectName службы Relation, обрабатывающей отношение. |
String |
getRelationTypeName() Возвращает имя связанного типа отношения. |
List<ObjectName> |
getRole(String roleName) Получает значение роли для заданного имени роли. |
Integer |
getRoleCardinality(String roleName) Возвращает количество MBean, в настоящее время ссылающихся на заданную роль. |
RoleResult |
getRoles(String[] roleNameArray) Получает значения ролей с заданными именами. |
void |
handleMBeanUnregistration(ObjectName objectName,
String roleName) Обратный вызов, используемый службой Relation, когда MBean, на который ссылается роль, аннулируется. |
Boolean |
isInRelationService() Возвращает внутренний флаг, указывающий, обрабатывается ли объект службой Relation. |
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) Указывает, обрабатывается ли это отношение службой Relation. |
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 или нет) за каждую обновлённую роль.
- Унаследовано от:
-
setRolesв интерфейсеRelation - Параметры:
-
list- список ролей для установки - Возвращает:
- объект RoleResult, содержащий RoleList (для успешно установленных ролей) и RoleUnresolvedList (для ролей, не установленных).
- Исключения:
-
IllegalArgumentException- если список ролей null -
RelationServiceNotRegisteredException- если служба отношений не зарегистрирована в MBean сервере -
RelationTypeNotFoundException- если тип отношения не объявлен в службе отношений. -
RelationNotFoundException- если MBean отношения не добавлен в службу отношений. - См. также:
getRoles(java.lang.String[])
handleMBeanUnregistration
public void handleMBeanUnregistration(ObjectName objectName,
String roleName)
throws IllegalArgumentException,
RoleNotFoundException,
InvalidRoleValueException,
RelationServiceNotRegisteredException,
RelationTypeNotFoundException,
RelationNotFoundException Обработчик, используемый службой отношений при раз регистрации MBean, ссылающегося на роль.
Служба отношений вызовет этот метод, чтобы позволить отношению выполнить действия для отражения последствий такой раз регистрации.
ВНИМАНИЕ. Пользователь не должен вызывать этот метод.
Текущая реализация устанавливает роль со своим текущим значением (списком ObjectName ссылающихся MBean) без удалённого.
- Указывается:
-
handleMBeanUnregistrationв интерфейсеRelation - Параметры:
-
objectName- Имя объекта неучтенного MBean -
roleName- имя роли, где ссылается на MBean - Исключения:
-
IllegalArgumentException- если параметр null -
RoleNotFoundException- если роли не существует в связи или она недоступна для записи -
InvalidRoleValueException- если значение роли не соответствует информации о связанной роли (это никогда не произойдёт при вызове из сервиса связи) -
RelationServiceNotRegisteredException- если служба связи не зарегистрирована в сервере MBean -
RelationTypeNotFoundException- если тип связи не объявлен в службе связи. -
RelationNotFoundException- если этот метод вызывается для объекта MBean связи, не добавленного в службу связи.
getReferencedMBeans
public Map<ObjectName,List<String>> getReferencedMBeans()
Извлекает MBeans, на которые ссылаются в различных ролях связи.
- Указывается:
-
getReferencedMBeansв интерфейсеRelation - Возвращает:
- a 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, если параметр name для одного изcreateMBeanилиregisterMBeanметодов в интерфейсеMBeanServerравен null. В этом случае этот метод должен вернуть не 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), MBean останется зарегистрированным.
Это может быть запутанно для кода, вызывающего createMBean() или registerMBean(), так как такой код может предположить, что регистрация MBean завершилась неудачно, когда возникает такое исключение. Поэтому рекомендуется, чтобы реализации postRegister не выбрасывали исключения Runtime или Error, если это возможно.
- Указывается:
-
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 завершилась неудачно. Поэтому рекомендуется, чтобы реализации postDeregister не выбрасывали исключения Runtime или Error, если это возможно.
- Указывается:
-
postDeregisterв интерфейсеMBeanRegistration
isInRelationService
public Boolean isInRelationService()
Возвращает внутренний флаг, указывающий, обрабатывается ли объект службой связи.
- Указывается:
-
isInRelationServiceв интерфейсеRelationSupportMBean - Возвращает:
- булево значение, равное
Boolean.TRUE, если объект по-прежнему обрабатывается службой связи, иBoolean.FALSEв противном случае.
setRelationServiceManagementFlag
public void setRelationServiceManagementFlag(Boolean flag)
throws IllegalArgumentException Описание скопировано из интерфейса: RelationSupportMBean
Указывает, обрабатывается ли эта связь службой связи.
ОСТОРОЖНО, этот метод должен быть экспонирован, так как служба связи будет получать доступ к связи через её интерфейс управления. РЕКОМЕНДУЕТСЯ НЕ использовать этот метод. Его использование не повлияет на регистрацию объекта связи в службе связи, но даст неверную информацию о нём!
- Указывается:
-
setRelationServiceManagementFlagв интерфейсеRelationSupportMBean - Параметры:
-
flag- обрабатывается ли связь службой связи. - Исключения:
-
IllegalArgumentException- если параметр null
© 1993, 2020, 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.