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格式的字符串时抛出此异常。