diff -r 836adbf7a2cd -r 3317bb8137f4 jdk/src/java.management/share/classes/javax/management/modelmbean/package.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.management/share/classes/javax/management/modelmbean/package.html Sun Aug 17 15:54:13 2014 +0100 @@ -0,0 +1,125 @@ + +
+Provides the definition of the ModelMBean classes. A Model + MBean is an MBean that acts as a bridge between the management + interface and the underlying managed resource. Both the + management interface and the managed resource are specified as + Java objects. The same Model MBean implementation can be + reused many times with different management interfaces and + managed resources, and it can provide common functionality + such as persistence and caching.
+ +A Model MBean implements the {@link + javax.management.modelmbean.ModelMBean ModelMBean} interface. + It is a {@link javax.management.DynamicMBean DynamicMBean} + whose {@link javax.management.DynamicMBean#getMBeanInfo() + getMBeanInfo} method returns an object implementing {@link + javax.management.modelmbean.ModelMBeanInfo + ModelMBeanInfo}.
+ +Every MBean has an {@link javax.management.MBeanInfo
+ MBeanInfo} with information about the MBean itself, and its
+ attributes, operations, constructors, and notifications. A
+ Model MBean augments this MBeanInfo
with {@link
+ javax.management.Descriptor Descriptor}s that encode
+ additional information in the form of (key,value) pairs.
+ Usually, Descriptor
s are instances of {@link
+ javax.management.modelmbean.DescriptorSupport
+ DescriptorSupport}.
The class {@link + javax.management.modelmbean.RequiredModelMBean + RequiredModelMBean} provides a standard Model MBean + implementation.
+ +The following example shows a Model MBean being used to make
+ the get
method of a HashMap
+ available for management through an MBean server. No other
+ methods are available through the MBean server. There is
+ nothing special about HashMap
here. Public
+ methods from any public class can be exposed for management in
+ the same way.
+import java.lang.reflect.Method; +import java.util.HashMap; +import javax.management.*; +import javax.management.modelmbean.*; + +// ... + +MBeanServer mbs = MBeanServerFactory.createMBeanServer(); +// The MBean Server + +HashMap map = new HashMap(); +// The resource that will be managed + +// Construct the management interface for the Model MBean +Method getMethod = HashMap.class.getMethod("get", new Class[] {Object.class}); +ModelMBeanOperationInfo getInfo = + new ModelMBeanOperationInfo("Get value for key", getMethod); +ModelMBeanInfo mmbi = + new ModelMBeanInfoSupport(HashMap.class.getName(), + "Map of keys and values", + null, // no attributes + null, // no constructors + new ModelMBeanOperationInfo[] {getInfo}, + null); // no notifications + +// Make the Model MBean and link it to the resource +ModelMBean mmb = new RequiredModelMBean(mmbi); +mmb.setManagedResource(map, "ObjectReference"); + +// Register the Model MBean in the MBean Server +ObjectName mapName = new ObjectName(":type=Map,name=whatever"); +mbs.registerMBean(mmb, mapName); + +// Resource can evolve independently of the MBean +map.put("key", "value"); + +// Can access the "get" method through the MBean Server +mbs.invoke(mapName, "get", new Object[] {"key"}, new String[] {Object.class.getName()}); +// returns "value" ++ +