Пакет javax.management.relation
Определяет Сервис отношений. Сервис отношений используется для записи взаимосвязей между MBean в сервере MBean. Сам Сервис отношений является MBean. В сервере MBean может быть зарегистрировано более одной инстанции MBean типа RelationService.
Тип отношения определяет отношение между MBean. Он содержит роли, которые играют MBean в отношении. Обычно в типе отношения есть, по крайней мере, две роли.
Отношение — это именованная инстанция типа отношения, где конкретные MBean появляются в ролях, представленных их ObjectName.
Например, предположим, что есть Module MBean, представляющие модули в приложении. Тип отношения DependsOn может выражать отношение, что некоторые модули зависят от других, что может использоваться для определения порядка запуска или остановки модулей. Тип отношения DependsOn будет иметь две роли, dependent и dependedOn.
Каждая роль типизирована, что означает, что MBean, появляющийся в этой роли, должен быть экземпляром типа роли. В примере DependsOn обе роли будут типа Module.
У каждой роли есть кардинальность, которая устанавливает нижнюю и верхнюю границы количества MBean, которые могут появиться в этой роли в данной инстанции отношения. Обычно нижняя и верхняя границы равны 1, и в роли появляется ровно один MBean. Кардинальность ограничивает только количество MBean в роли для каждой инстанции отношения. Один и тот же MBean может появляться в одной и той же роли в любом количестве инстанций типа отношения. В примере DependsOn определенный модуль может зависеть от многих других модулей и зависеть от многих других, но каждая конкретная инстанция отношения связывает ровно один dependent модуль с ровно одним dependedOn модулем.
Тип отношения может быть создан явно как объект, реализующий интерфейс RelationType, обычно это RelationTypeSupport. В качестве альтернативы он может быть создан неявно с помощью метода createRelationType Сервиса отношений.
Инстанцию отношения можно создать явно как объект, реализующий интерфейс Relation, обычно это RelationSupport. (Инстанция отношения сама по себе является допустимым MBean, поэтому она может быть зарегистрирована в сервере MBean, хотя это необязательно.) В качестве альтернативы инстанцию отношения можно создать неявно, используя метод createRelation Сервиса отношений.
Пример DependsOn может быть реализован следующим образом.
import java.util.*;
import javax.management.*;
import javax.management.relation.*;
// ...
MBeanServer mbs = ...;
// Create the Relation Service MBean
ObjectName relSvcName = new ObjectName(":type=RelationService");
RelationService relSvcObject = new RelationService(true);
mbs.registerMBean(relSvcObject, relSvcName);
// Create an MBean proxy for easier access to the Relation Service
RelationServiceMBean relSvc =
MBeanServerInvocationHandler.newProxyInstance(mbs, relSvcName,
RelationServiceMBean.class,
false);
// Define the DependsOn relation type
RoleInfo[] dependsOnRoles = {
new RoleInfo("dependent", Module.class.getName()),
new RoleInfo("dependedOn", Module.class.getName())
};
relSvc.createRelationType("DependsOn", dependsOnRoles);
// Now define a relation instance "moduleA DependsOn moduleB"
ObjectName moduleA = new ObjectName(":type=Module,name=A");
ObjectName moduleB = new ObjectName(":type=Module,name=B");
Role dependent = new Role("dependent", Collections.singletonList(moduleA));
Role dependedOn = new Role("dependedOn", Collections.singletonList(moduleB));
Role[] roleArray = {dependent, dependedOn};
RoleList roles = new RoleList(Arrays.asList(roleArray));
relSvc.createRelation("A-DependsOn-B", "DependsOn", roles);
// Query the Relation Service to find what modules moduleA depends on
Map<ObjectName,List<String>> dependentAMap =
relSvc.findAssociatedMBeans(moduleA, "DependsOn", "dependent");
Set<ObjectName> dependentASet = dependentAMap.keySet();
// Set of ObjectName containing moduleB
- Since:
- 1.5
- See Also:
| Класс | Описание |
|---|---|
| InvalidRelationIdException | Данное исключение генерируется, когда идентификатор отношения, предоставленный для отношения, уже используется. |
| InvalidRelationServiceException | Данное исключение генерируется, когда предоставлен недопустимый Сервис отношений. |
| InvalidRelationTypeException | Недопустимый тип отношения. |
| InvalidRoleInfoException | Данное исключение генерируется, когда в информации о роли минимальная степень больше максимальной степени. |
| InvalidRoleValueException | Значение роли недопустимо. |
| MBeanServerNotificationFilter | Фильтр для MBeanServerNotification. |
| Relation | Этот интерфейс должен реализовываться любым классом MBean, ожидаемым для представления отношения, управляемого с помощью Сервиса отношений. |
| RelationException | Этот класс является суперклассом любых исключений, которые могут возникать во время управления отношениями. |
| RelationNotFoundException | Данное исключение генерируется, когда для данного идентификатора отношения в Сервисе отношений нет отношения. |
| RelationNotification | Уведомление об изменении в Сервисе отношений. |
| RelationService | Сервис отношений отвечает за создание и удаление типов отношений и отношений, за поддержание согласованности и предоставление механизмов запросов. |
| RelationServiceMBean | Сервис отношений отвечает за создание и удаление типов отношений и отношений, за поддержание согласованности и предоставление механизмов запросов. |
| RelationServiceNotRegisteredException | Данное исключение генерируется, когда доступ к Сервису отношений производится, но он не зарегистрирован. |
| RelationSupport | Объект RelationSupport используется внутри Сервиса отношений для представления простых отношений (только роли, без свойств или методов), с неограниченным количеством ролей любого типа отношения. |
| RelationSupportMBean | Объект RelationSupport используется внутри Сервиса отношений для представления простых отношений (только роли, без свойств или методов), с неограниченным количеством ролей любого типа отношения. |
| RelationType | Интерфейс RelationType должен реализовываться любым классом, ожидаемым для представления типа отношения. |
| RelationTypeNotFoundException | Данное исключение генерируется, когда в Сервисе отношений нет типа отношения с данным именем. |
| RelationTypeSupport | Объект RelationTypeSupport реализует интерфейс RelationType. |
| Role | Представляет роль: включает имя роли и ссылающиеся MBean (через их ObjectNames). |
| RoleInfo | Объект RoleInfo обобщает роль в типе отношения. |
| RoleInfoNotFoundException | Данное исключение генерируется, когда в данном типе отношения нет информации о роли с данным именем. |
| RoleList | RoleList представляет список ролей (объекты Role). |
| RoleNotFoundException | Данное исключение генерируется, когда роль в отношении не существует, или она недоступна для чтения, или недоступна для записи. |
| RoleResult | Представляет результат множественного доступа к нескольким ролям отношения (для чтения или записи). |
| RoleStatus | Этот класс описывает различные проблемы, которые могут возникнуть при доступе к роли. |
| RoleUnresolved | Представляет неразрешенную роль: роль, не извлеченная из отношения из-за проблемы. |
| RoleUnresolvedList | RoleUnresolvedList представляет список объектов RoleUnresolved, представляющих роли, не извлеченные из отношения из-за проблемы, возникшей при попытке получить доступ (читать или писать) к ролям. |
© 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/package-summary.html