Spec-Zone.ru › OpenJDK 25

Пакет javax.management.relation

package 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
См. также:
  • Спецификация JMX, версия 1.4
Пакет Описание
javax.management
Предоставляет основные классы для расширений управления Java.
Класс Описание
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, соответствующих ролям, не полученным из отношения из-за проблемы, возникшей при попытке доступа к ролям (чтения или записи).

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в разделе документации Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API