javax.management.relation

接口
异常
提供 Relation Service 的定义。

请参见:
          描述

接口摘要
Relation 此接口必须由任何 MBean 类(期望表示为一种使用 Relation Service 管理的关系)来实现。
RelationServiceMBean Relation Service 负责创建和删除关系类型和关系,还负责处理一致性和提供查询机制。
RelationSupportMBean RelationSupport 对象由 Relation Service 内部使用,表示任何关系类型的具有无限量角色的简单关系(只有角色,没有属性或方法)。
RelationType 该 RelationType 接口必须由期望表示关系类型的任何类来实现。
 

类摘要
MBeanServerNotificationFilter MBeanServerNotification 的过滤器。
RelationNotification Relation Service(关系服务)中的更改通知。
RelationService Relation Service 负责创建和删除关系类型和关系,负责处理一致性并负责提供查询机制。
RelationSupport RelationSupport 对象由 Relation Service 内部使用,表示任何关系型的具有不限数量的角色的简单关系(只有角色,没有属性或方法)。
RelationTypeSupport RelationTypeSupport 对象实现 RelationType 接口。
Role 表示角色:包括角色名称和引用的 MBean(通过其 ObjectName)。
RoleInfo RoleInfo 概括介绍关系类型中的角色。
RoleList RoleList 表示角色(Role 对象)的列表。
RoleResult 表示对一个关系的几个角色多个访问的结果(可以是读取,也可以是写入)。
RoleStatus 此类描述访问某个角色时可能遇到的各种问题。
RoleUnresolved 表示未解析的角色:由于存在问题而无法从关系中检索到的角色。
RoleUnresolvedList RoleUnresolvedList 表示 RoleUnresolved 对象的列表,这些对象代表在试图访问角色(进行读取或写入)时遇到问题而无法从关系检索到的角色。
 

异常摘要
InvalidRelationIdException 为关系提供的关系 id 已使用时引发此异常。
InvalidRelationServiceException 提供无效 Relation Service(关系服务)时引发此异常。
InvalidRelationTypeException 无效的关系类型。
InvalidRoleInfoException 在角色信息中,其最小程度大于其最大程度时,引发此异常。
InvalidRoleValueException 角色值无效。
RelationException 此类是关系管理过程中引发的任何异常的超类。
RelationNotFoundException Relation Service(关系服务)中不存在给定关系 id 的关系时引发此异常。
RelationServiceNotRegisteredException 在对 Relation Service(关系服务)进行访问而该 Relation Service 未注册时引发此异常。
RelationTypeNotFoundException Relation Service(关系服务)中不存在带给定名称的关系类型时引发此异常。
RoleInfoNotFoundException 给定的关系类型中不存在带指定名称的角色信息时引发此异常。
RoleNotFoundException 关系中的某个角色不存在,或不可读,或不可设置时,引发此异常。
 

软件包 javax.management.relation 的描述

提供 Relation Service 的定义。Relation Service 用于记录 MBean Server 中各个 MBean 之间的关系。Relation Service 本身就是一个 MBean。在一个 MBean Server 中可以注册多个 RelationService MBean 实例。

关系类型 定义各个 MBean 之间的关系。它包含各个 MBean 在关系中充当的角色。通常,在一个关系类型中至少有两个角色。

关系 是关系类型的命名实例,其中具体的 MBean 将出现在由其 ObjectName 表示的角色中。

例如,假定存在表示应用程序中的模块的 Module MBean。DependsOn 关系类型可以表达一些模块依赖于其他模块(这些模块可以用于定义模块开始和停止的顺序)的关系。DependsOn 关系类型应有两个角色,dependentdependedOn

每个角色都经过了类型化,这意味着在该角色中出现的 MBean 必须是该角色类型的实例。在 DependsOn 示例中,两个角色都属于类型 Module

每个角色都有一个容量,它为给定关系实例的角色中出现的 MBean 的数量提供上下边界。通常,上下边界都是 1,这样可保证在此角色中只出现一个 MBean。该容量只限制每个关系实例的角色中的 MBean 的数量。同一个 MBean 可以在任意数量的关系类型实例中的同一个角色中出现。在 DependsOn 示例中,给定模块可能依赖于许多其他模块,也可以被许多其他模块所依赖,但是任何给定关系实例都只能将一个 dependent 模块与唯一对应的那个 dependedOn 模块连接。

关系类型可以作为实现 RelationType 接口的对象显式地创建,此对象通常为 RelationTypeSupport。或者,它可以使用 Relation Service 的 createRelationType 方法隐式地创建。

关系类型可以作为实现 Relation 接口的对象显式地创建,此对象通常是为 RelationSupport。(RelationSupport 本身是一个有效的 MBean,因此它可以在 MBean Server 中注册,但不要求这样做。)或者,关系类型可以使用 Relation Service 的 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
另请参见:
Java SE 6 Platform documentation on JMX technology, 特别是 JMX Specification, version 1.4