Пакет javax.management.relation
Предоставляет определение службы Relations. Служба Relations используется для записи отношений между MBean в сервере MBean. Служба Relations сама является 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 службы Relations.
Экземпляр отношения может быть создан явно, как объект, реализующий интерфейс Relation, обычно RelationSupport. (Экземпляр RelationSupport сам является допустимым MBean, поэтому он может быть зарегистрирован в сервере MBean, хотя это не требуется.) В качестве альтернативы, экземпляр отношения может быть создан неявно, используя метод createRelation службы Relations.
Пример 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:
- Спецификация JMX, версия 1.4
| Интерфейс | Описание |
|---|---|
| Relation | Этот интерфейс должен реализовываться любым классом MBean, ожидаемым для представления отношения, управляемого службой Relations. |
| RelationServiceMBean | Служба Relations отвечает за создание и удаление типов отношений и отношений, за обработку согласованности и предоставление механизмов запросов. |
| RelationSupportMBean | Объект RelationSupport используется внутри службы Relations для представления простых отношений (только роли, без свойств или методов), с неограниченным количеством ролей любого типа отношения. |
| RelationType | Интерфейс RelationType должен реализовываться любым классом, ожидаемым для представления типа отношения. |
| Класс | Описание |
|---|---|
| MBeanServerNotificationFilter | Фильтр для |
| RelationNotification | Уведомление об изменении в службе Relations. |
| RelationService | Служба Relations отвечает за создание и удаление типов отношений и отношений, за обработку согласованности и предоставление механизмов запросов. |
| RelationSupport | Объект RelationSupport используется внутри службы Relations для представления простых отношений (только роли, без свойств или методов), с неограниченным количеством ролей любого типа отношения. |
| RelationTypeSupport | Объект RelationTypeSupport реализует интерфейс RelationType. |
| Role | Представляет роль: включает имя роли и ссылающиеся MBean (через их ObjectNames). |
| RoleInfo | Объект RoleInfo обобщает роль в типе отношения. |
| RoleList | RoleList представляет собой список объектов роли (Role). |
| RoleResult | Представляет результат множественного доступа к нескольким ролям отношения (как для чтения, так и для записи). |
| RoleStatus | Этот класс описывает различные проблемы, которые могут возникнуть при доступе к роли. |
| RoleUnresolved | Представляет неразрешённую роль: роль, не извлечённую из отношения из-за проблемы. |
| RoleUnresolvedList | RoleUnresolvedList представляет собой список объектов RoleUnresolved, представляющих роли, не извлечённые из отношения из-за проблемы, возникшей при попытке доступа (чтения или записи) к ролям. |
| Исключение | Описание |
|---|---|
| InvalidRelationIdException | Это исключение возникает, когда идентификатор отношения, предоставленный для отношения, уже используется. |
| InvalidRelationServiceException | Это исключение возникает, когда предоставлена недопустимая служба Relations. |
| InvalidRelationTypeException | Неверный тип отношения. |
| InvalidRoleInfoException | Это исключение возникает, когда в информации о роли минимальная степень больше максимальной степени. |
| InvalidRoleValueException | Значение роли недействительно. |
| RelationException | Этот класс является базовым классом для любых исключений, которые могут возникнуть во время управления отношениями. |
| RelationNotFoundException | Это исключение возникает, когда для данного идентификатора отношения в службе Relations нет отношения. |
| RelationServiceNotRegisteredException | Это исключение возникает, когда доступ осуществляется к службе Relations, и она не зарегистрирована. |
| RelationTypeNotFoundException | Это исключение возникает, когда в службе Relations нет типа отношения с заданным именем. |
| RoleInfoNotFoundException | Это исключение возникает, когда в заданном типе отношения нет информации о роли с заданным именем. |
| RoleNotFoundException | Это исключение возникает, когда роли в отношении не существует, она недоступна для чтения или записи. |
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.management/javax/management/relation/package-summary.html