javax.management

Class JMX

public class JMX extends Object

Common static methods pertaining to the management API. There are no instances of this class.

Since: 1.6

Field Summary
static StringDEFAULT_VALUE_FIELD
The name of the defaultValue field.
static StringIMMUTABLE_INFO_FIELD
The name of the immutableInfo field.
static StringINTERFACE_CLASS_NAME_FIELD
The name of the interfaceClassName field.
static StringLEGAL_VALUES_FIELD
The name of the legalValues field.
static StringMAX_VALUE_FIELD
The name of the maxValue field.
static StringMIN_VALUE_FIELD
The name of the minValue field.
static StringMXBEAN_FIELD
The name of the mxbean field.
static StringOPEN_TYPE_FIELD
The name of the openType field.
static StringORIGINAL_TYPE_FIELD
The name of the originalType field.
Method Summary
static booleanisMXBeanInterface(Class<?> iface)

Returns true if the given class represents an MXBean interface.

static <T> TnewMBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface)

Returns a proxy for a standard management bean, using the specified connection to access the named implementation.

static <T> TnewMBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface, boolean bcast)
Returns a proxy for a standard management bean, using the specified connection to access the named implementation, as with JMX.
static <T> TnewMXBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface)

Returns a proxy for a MXBean, using the specified connection to access the named implementation.

static <T> TnewMXBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface, boolean bcast)
Returns a proxy for a MXBean, using the specified connection to access the named implementation, as with JMX.

Field Detail

DEFAULT_VALUE_FIELD

public static final String DEFAULT_VALUE_FIELD
The name of the defaultValue field.

IMMUTABLE_INFO_FIELD

public static final String IMMUTABLE_INFO_FIELD
The name of the immutableInfo field.

INTERFACE_CLASS_NAME_FIELD

public static final String INTERFACE_CLASS_NAME_FIELD
The name of the interfaceClassName field.

LEGAL_VALUES_FIELD

public static final String LEGAL_VALUES_FIELD
The name of the legalValues field.

MAX_VALUE_FIELD

public static final String MAX_VALUE_FIELD
The name of the maxValue field.

MIN_VALUE_FIELD

public static final String MIN_VALUE_FIELD
The name of the minValue field.

MXBEAN_FIELD

public static final String MXBEAN_FIELD
The name of the mxbean field.

OPEN_TYPE_FIELD

public static final String OPEN_TYPE_FIELD
The name of the openType field.

ORIGINAL_TYPE_FIELD

public static final String ORIGINAL_TYPE_FIELD
The name of the originalType field.

Method Detail

isMXBeanInterface

public static boolean isMXBeanInterface(Class<?> iface)

Returns true if the given class represents an MXBean interface. An interface is an MXBean interface if:

Parameters: iface the interface class that is to be checked for MXBean status.

Returns: true if the interface represents an MXBean.

Throws: NullPointerException if {@code iface} is {@code null}.

newMBeanProxy

public static <T> T newMBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface)

Returns a proxy for a standard management bean, using the specified connection to access the named implementation. To create a proxy for the bean, {@code SomethingMBean}, a call to {@code JMX.newMBeanProxy(server, name, SomethingMBean.class)} is made, where {@code server} is a local or remote management server, and {@code name} is the registered ObjectName of the implementation of {@code SomethingMBean} to use.

The proxy redirects calls to the methods of the interface, SomethingMBean, to the appropriate methods of the management server. If SomethingMBean is specified as follows:

 public interface SomethingMBean
 {
   String getName();
   void setName(String name);
   void doStuff();
 }
 

The proxy created above will provide these three methods using an instance of MBeanServerInvocationHandler. The two methods, {@code getName} and {@code setName} define an attribute, {@code Name}, so a call to {@code getName()} will return the value of {@code server.getAttribute(name, "Name")}, while {@code setName(newName)} will result in a call to {@code server.setAttribute(name, new Attribute("Name", newName))}. Finally, {@code doStuff()}, as an operation, will cause the proxy to call (ObjectName, String, Object[], String[]) as {@code server.invoke(name, "doStuff", null, null)}.

Calling this method is equivalent to calling JMX.

Parameters: conn the server connection over which to forward calls to the bean. name the registered name of the bean to use to implement the given interface. iface the interface to provide a proxy for.

Returns: a proxy implementing the specified interface using calls to the methods of the bean registered with the supplied server using the given name.

See Also: JMX

newMBeanProxy

public static <T> T newMBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface, boolean bcast)
Returns a proxy for a standard management bean, using the specified connection to access the named implementation, as with JMX. In addition, the proxy returned by this method will also implement NotificationEmitter if {@code bcast} is true, under the assumption that the implementation referenced by {@code name} implements this interface. Calls to the methods of NotificationEmitter will be forwarded to the bean implementation via the appropriate server methods.

Parameters: conn the server connection over which to forward calls to the bean. name the registered name of the bean to use to implement the given interface. iface the interface to provide a proxy for. bcast true if the proxy should implement NotificationEmitter.

Returns: a proxy implementing the specified interface using calls to the methods of the bean registered with the supplied server using the given name.

See Also: JMX

newMXBeanProxy

public static <T> T newMXBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface)

Returns a proxy for a MXBean, using the specified connection to access the named implementation. To create a proxy for the bean, {@code SomethingMXBean}, a call to {@code JMX.newMXBeanProxy(server, name, SomethingMXBean.class)} is made, where {@code server} is a local or remote management server, and {@code name} is the registered ObjectName of the implementation of {@code SomethingMBean} to use.

The proxy redirects calls to the methods of the interface, SomethingMXBean, to the appropriate methods of the management server with appropriate conversion between Java and open types, according to the MXBean rules. If SomethingMXBean is specified as follows:

 public interface SomethingMXBean
 {
   String getName();
   void setName(String name);
   List getStatistics();
   void setStatistics(List statistics);
   List getNamedStatistics(String, Map);
 }
 

The proxy created above will provide these five methods using an instance of MBeanServerInvocationHandler. The two methods, {@code getName} and {@code setName} define an attribute, {@code Name}, so a call to {@code getName()} will return the value of {@code server.getAttribute(name, "Name")}, while {@code setName(newName)} will result in a call to {@code server.setAttribute(name, new Attribute("Name", newName))}. As this uses a simple type, String, no conversion is necessary.

The two methods, {@code getStatistics} and {@code setStatistics} similarly define another attribute, {@code Statistics}. Calling {@code getStatistics()} will cause a call to the server to be made as before, {@code server.getAttribute(name, "Statistics")}. However, the type of the return value from this call will be an array of Double objects, as per the MXBean rules. The proxy converts this back in to a List of Double objects before returning it.

The same process is applied in reverse for {@code setStatistics(newStats)}. The list is converted into an appropriate array before the call to MBeanServerConnection is made. Finally, a call to {@code getNamedStatistics} will require both a Java to open type conversion on the arguments, and then an open type to Java conversion of the return value. Thus, a proxy enables an MXBean to be used in cases where the appropriate Java types are available and the user wishes to access the bean using the types directly defined in its interface, just as with standard management beans.

Calling this method is equivalent to calling JMX.

Parameters: conn the server connection over which to forward calls to the bean. name the registered name of the bean to use to implement the given interface. iface the interface to provide a proxy for.

Returns: a proxy implementing the specified interface using calls to the methods of the bean registered with the supplied server using the given name.

See Also: JMX

newMXBeanProxy

public static <T> T newMXBeanProxy(MBeanServerConnection conn, ObjectName name, Class<T> iface, boolean bcast)
Returns a proxy for a MXBean, using the specified connection to access the named implementation, as with JMX. In addition, the proxy returned by this method will also implement NotificationEmitter if {@code bcast} is true, under the assumption that the implementation referenced by {@code name} implements this interface. Calls to the methods of NotificationEmitter will be forwarded to the bean implementation via the appropriate server methods.

Parameters: conn the server connection over which to forward calls to the bean. name the registered name of the bean to use to implement the given interface. iface the interface to provide a proxy for. bcast true if the proxy should implement NotificationEmitter.

Returns: a proxy implementing the specified interface using calls to the methods of the bean registered with the supplied server using the given name.

See Also: JMX