Package javax.management.relation
提供Relation Service的定义。 Relation Service用于记录MBean Server中MBean之间的关系。 Relation Service本身就是一个MBean。 可以在MBean Server中注册多个RelationService
MBean的实例。
关系类型定义MBean之间的关系。 它包含MBeans在关系中扮演的角色 。 通常,关系类型中至少有两个角色。
关系是关系类型的命名实例,其中特定MBean出现在角色中,由其ObjectName
表示。
例如,假设有模块
MBean,表示应用程序中的模块。 DependsOn
关系类型可以表示某些模块依赖于其他模块的关系,这可以用于确定模块启动或停止的顺序。 DependsOn
关系类型将具有两个角色, dependent
和dependedOn
。
每个角色都是键入的 ,这意味着该角色中出现的MBean必须是角色类型的实例。 在DependsOn
示例中,两个角色的类型模块
。
每个角色都有一个基数 ,它提供了在给定关系实例中可以出现在该角色中的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
- 另请参见:
- JMX Specification, version 1.4
-
接口摘要 接口 描述 Relation 此接口必须由期望表示使用Relation Service管理的关系的任何MBean类实现。RelationServiceMBean Relation Service负责创建和删除关系类型和关系,处理一致性和提供查询机制。RelationSupportMBean RelationSupport对象在内部由Relation Service使用,用于表示任何关系类型的具有无限数量角色的简单关系(仅角色,无属性或方法)。RelationType RelationType接口必须由期望表示关系类型的任何类实现。 -
类摘要 类 描述 MBeanServerNotificationFilter RelationNotification 关系服务中的更改通知。RelationService Relation Service负责创建和删除关系类型和关系,处理一致性和提供查询机制。RelationSupport RelationSupport对象在内部由Relation Service使用,用于表示任何关系类型的具有无限数量角色的简单关系(仅角色,无属性或方法)。RelationTypeSupport RelationTypeSupport对象实现RelationType接口。Role 表示角色:包括角色名称和引用的MBean(通过其ObjectNames)。RoleInfo RoleInfo对象总结了关系类型中的角色。RoleList RoleList表示角色列表(角色对象)。RoleResult 表示对关系的多个角色(用于读取或写入)的多次访问的结果。RoleStatus 本课程描述了访问角色时可能遇到的各种问题。RoleUnresolved 表示未解决的角色:由于问题而未从关系中检索的角色。RoleUnresolvedList RoleUnresolvedList表示RoleUnresolved对象的列表,表示由于尝试访问(读取或写入)角色时遇到问题而未从关系中检索的角色。 -
异常摘要 异常 描述 InvalidRelationIdException 当已经使用为关系提供的关系id时,引发此异常。InvalidRelationServiceException 提供无效的Relation Service时会引发此异常。InvalidRelationTypeException 关系类型无效。InvalidRoleInfoException 当在角色信息中,其最小程度大于其最大程度时,会引发此异常。InvalidRoleValueException 角色值无效。RelationException 此类是在关系管理期间可以引发的任何异常的超类。RelationNotFoundException 当Relation Service中的给定关系id没有关系时,会引发此异常。RelationServiceNotRegisteredException 访问Relation Service并且未注册时,会引发此异常。RelationTypeNotFoundException 当Relation Service中没有给定名称的关系类型时,会引发此异常。RoleInfoNotFoundException 当给定关系类型中没有给定名称的角色信息时,会引发此异常。RoleNotFoundException 当关系中的角色不存在,或者不可读或不可设置时,会引发此异常。