Пакет 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

Фильтр для MBeanServerNotification.

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

Spec-Zone .ru
спецификации, руководства, описания, API