Пакет javax.management.relation
Предоставляет определение службы отношений. Служба отношений используется для регистрации связей между MBean в сервере MBean. Сама служба отношений является MBean. В сервере MBean может быть зарегистрировано несколько экземпляров MBean RelationService.
Тип отношений определяет связь между MBean. Он содержит роли, которые MBean играют в этой связи. Обычно тип отношений содержит не менее двух ролей.
Отношение — это именованный экземпляр типа отношений, в ролях которого указаны конкретные MBean, представленные их ObjectName.
Например, предположим, что существуют MBean Module, представляющие модули приложения. Тип отношений 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
- С версии:
- 1.5
- См. также:
| Класс | Описание |
|---|---|
| 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, 2025, 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/25/docs/api/java.management/javax/management/relation/package-summary.html