Chapter 3. Dynamic MBeans

Standard MBeans are well suited for management interfaces that are relatively static. However, if a management interface must be defined for an existing resource, is likely to evolve over time, or for some other reason needs to be exposed at runtime, JMX provides an interface that allows you to do just that. In this chapter, we will start by looking at the reasons for instrumenting application code as dynamic MBeans. Then we will look at the metadata classes that are used to define the management interface of a dynamic MBean. Next, we will explore ways to implement the DynamicMBean interface and show how the MBeanInfo metadata class is critical in making dynamic MBeans work. At the end of the chapter, we will examine the management interface inheritance patterns that are used with dynamic MBeans.

Tip

This chapter assumes that you either are already familiar with standard MBeans or have read Chapter 2.

Why Use Dynamic MBeans?

The main reason to use dynamic MBeans is to more easily instrument existing code that is written in a manner that conflicts with the standard MBean design patterns we discussed in Chapter 2. The dynamic MBean interface is determined not through introspection, but rather through a method call on the dynamic MBean itself. This method, called getMBeanInfo( ) , returns information about the management interface and is defined on the DynamicMBean interface; it is the portal through which a management application views what has been exposed on the management interface of a resource that has been instrumented as a dynamic MBean.

Another reason to use dynamic MBeans is so that you can provide descriptions of the MBean features that are visible to the management application. An MBean feature is an attribute, constructor, operation, parameter, or notification of an MBean. The feature description is a brief explanation of what a particular feature means when viewed from a management application. The feature’s name usually indicates what it means, but this isn’t always the case. Feature descriptions are not available to standard MBeans.

Because the dynamic MBean interface is exposed at runtime, rather than at compile time (as a standard MBean is), the management interface is exposed through metadata classes. If the management interface is likely to change over time, dynamic MBeans offer a more flexible way to instrument a resource. The management interface is not statically bound to a dynamic MBean, as it is for a standard MBean. Rather, the management interface is exposed dynamically. As such, it is conceivable that a dynamic MBean could—without code changes—expose a different interface from one instance to the next by reading which attributes and operations to expose from a configuration file.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset