Пакет 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. (Инстанция 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, на которые она ссылается (через их ObjectName). |
| RoleInfo | Объект RoleInfo обобщает роль в типе отношения. |
| RoleInfoNotFoundException | Это исключение возникает, когда в данном типе отношения нет информации о роли с заданным именем. |
| RoleList | RoleList представляет список ролей (объектов Role). |
| RoleNotFoundException | Это исключение возникает, когда роль в отношении не существует, или не может быть прочитана, или не может быть установлена. |
| RoleResult | Представляет результат множественного доступа к нескольким ролям отношения (для чтения или записи). |
| RoleStatus | Этот класс описывает различные проблемы, которые могут возникнуть при доступе к роли. |
| RoleUnresolved | Представляет неразрешенную роль: роль, не полученная из отношения из-за проблемы. |
| RoleUnresolvedList | RoleUnresolvedList представляет список объектов RoleUnresolved, представляющих роли, не полученные из отношения из-за проблемы, возникшей при попытке доступа (чтения или записи) к ролям. |
© 1993, 2023, 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/21/docs/api/java.management/javax/management/relation/package-summary.html