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 @@ + + +javax.management.modelmbean package + + + + +

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, Descriptors 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"
+    
+ +

Package Specification

+ + + + @since 1.5 + + +