How Do Dynamic MBeans Work?
Like standard MBeans, dynamic MBeans must be created and registered with the MBean server. When the MBean server is asked to register a dynamic MBean, however, no introspection is performed. Recall that it is the strict application of the standard MBean design patterns (discussed in Chapter 2)—enforced through introspection—that tells the MBean server what management interface is exposed on an MBean. So, how does a dynamic MBean expose its management interface?
Instead of using a Java interface with the name
“MBean” on it, dynamic MBeans use
metadata classes to expose their management interfaces. They make
that metadata available through an interface called
DynamicMBean
, which must be implemented by all
dynamic MBeans. This interface is shown in Example 3-1.
Example 3-1. The DynamicMBean interface
package javax.management; public interface DynamicMBean { public Object getAttribute(String attribute) throws AttributeNotFoundException, MBeanException, ReflectionException; public void setAttribute(Attribute attribute) throws AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException; public AttributeList getAttributes(String[] attributes); public AttributeList setAttributes(AttributeList attributes); public Object invoke(String actionName, Object params[], String signature[]) throws MBeanException, ReflectionException; public MBeanInfo getMBeanInfo( ); }
Essentially, the DynamicMBean
interface provides a
way for a
Get Java Management Extensions now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.