Module java.management
Package javax.management.modelmbean
package javax.management.modelmbean
提供了ModelMBean类的定义。Model MBean是一个充当管理接口和底层托管资源之间桥梁的MBean。管理接口和托管资源都指定为Java对象。相同的Model MBean实现可以多次重用,具有不同的管理接口和托管资源,并且可以提供诸如持久性和缓存等通用功能。
Model MBean实现了ModelMBean接口。它是一个DynamicMBean,其getMBeanInfo方法返回一个实现ModelMBeanInfo的对象。
每个MBean都有一个包含有关MBean本身及其属性、操作、构造函数和通知的信息的MBeanInfo。Model MBean通过使用Descriptor来增强这个MBeanInfo,Descriptor以(key,value)对的形式编码附加信息。通常,Descriptor是DescriptorSupport的实例。
类RequiredModelMBean提供了标准的Model MBean实现。
以下示例展示了如何使用Model MBean使HashMap的get方法通过MBean服务器进行管理。其他方法不能通过MBean服务器访问。这里的HashMap没有特殊之处。任何公共类的公共方法都可以以相同的方式暴露给管理。
import java.lang.reflect.Method;
import java.util.HashMap;
import javax.management.*;
import javax.management.modelmbean.*;
// ...
MBeanServer mbs = MBeanServerFactory.createMBeanServer();
// MBean服务器
HashMap map = new HashMap();
// 将被管理的资源
// 为Model MBean构建管理接口
Method getMethod = HashMap.class.getMethod("get", new Class[] {Object.class});
ModelMBeanOperationInfo getInfo =
new ModelMBeanOperationInfo("获取键的值", getMethod);
ModelMBeanInfo mmbi =
new ModelMBeanInfoSupport(HashMap.class.getName(),
"键和值的映射",
null, // 没有属性
null, // 没有构造函数
new ModelMBeanOperationInfo[] {getInfo},
null); // 没有通知
// 创建Model MBean并将其链接到资源
ModelMBean mmb = new RequiredModelMBean(mmbi);
mmb.setManagedResource(map, "ObjectReference");
// 在MBean服务器中注册Model MBean
ObjectName mapName = new ObjectName(":type=Map,name=whatever");
mbs.registerMBean(mmb, mapName);
// 资源可以独立于MBean发展
map.put("key", "value");
// 可以通过MBean服务器访问“get”方法
mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getName()});
// 返回“value”
包规范
- 请参阅JMX 1.4规范 JMX规范,版本1.4
- 自版本:
- 1.5
-
ClassDescription此类表示ModelMBean元素的元数据集。当指定了无效的目标对象类型时抛出异常。ModelMBeans必须实现此接口。ModelMBeanAttributeInfo对象描述了ModelMBean的属性。ModelMBeanConstructorInfo对象描述了ModelMBean的构造函数。此接口由每个ModelMBean的ModelMBeanInfo实现。此类表示ModelMBeans的元数据。ModelMBeans必须实现此接口。ModelMBeanNotificationInfo对象描述了ModelMBean发出的通知。ModelMBeanOperationInfo对象描述了ModelMBean的管理操作。这个类是ModelMBean的实现。当将XML格式的字符串解析为ModelMBean对象或从ModelMBean对象创建XML格式的字符串时抛出此异常。