public abstract class

JmxUtils

extends Object
java.lang.Object
   ↳ org.springframework.jmx.support.JmxUtils

Class Overview

Collection of generic utility methods to support Spring JMX. Includes a convenient method to locate an MBeanServer.

Summary

Constants
String IDENTITY_OBJECT_NAME_KEY The key used when extending an existing ObjectName with the identity hash code of its corresponding managed resource.
Public Constructors
JmxUtils()
Public Methods
static ObjectName appendIdentityToObjectName(ObjectName objectName, Object managedResource)
Append an additional key/value pair to an existing ObjectName with the key being the static value identity and the value being the identity hash code of the managed resource being exposed on the supplied ObjectName.
static String getAttributeName(PropertyDescriptor property, boolean useStrictCasing)
Return the JMX attribute name to use for the given JavaBeans property.
static Class<?> getClassToExpose(Object managedBean)
Return the class or interface to expose for the given bean.
static Class<?> getClassToExpose(Class<?> clazz)
Return the class or interface to expose for the given bean class.
static Class<?> getMBeanInterface(Class<?> clazz)
Return the Standard MBean interface for the given class, if any (that is, an interface whose name matches the class name of the given class but with suffix "MBean").
static Class<?> getMXBeanInterface(Class<?> clazz)
Return the Java 6 MXBean interface exists for the given class, if any (that is, an interface whose name ends with "MXBean" and/or carries an appropriate MXBean annotation).
static String[] getMethodSignature(Method method)
Create a String[] representing the argument signature of a method.
static boolean isMBean(Class<?> clazz)
Determine whether the given bean class qualifies as an MBean as-is.
static boolean isMXBeanSupportAvailable()
Check whether MXBean support is available, i.e.
static MBeanServer locateMBeanServer()
Attempt to find a locally running MBeanServer.
static MBeanServer locateMBeanServer(String agentId)
Attempt to find a locally running MBeanServer.
static Class[] parameterInfoToTypes(MBeanParameterInfo[] paramInfo)
Convert an array of MBeanParameterInfo into an array of Class instances corresponding to the parameters.
static Class[] parameterInfoToTypes(MBeanParameterInfo[] paramInfo, ClassLoader classLoader)
Convert an array of MBeanParameterInfo into an array of Class instances corresponding to the parameters.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

public static final String IDENTITY_OBJECT_NAME_KEY

The key used when extending an existing ObjectName with the identity hash code of its corresponding managed resource.

Constant Value: "identity"

Public Constructors

public JmxUtils ()

Public Methods

public static ObjectName appendIdentityToObjectName (ObjectName objectName, Object managedResource)

Append an additional key/value pair to an existing ObjectName with the key being the static value identity and the value being the identity hash code of the managed resource being exposed on the supplied ObjectName. This can be used to provide a unique ObjectName for each distinct instance of a particular bean or class. Useful when generating ObjectNames at runtime for a set of managed resources based on the template value supplied by a ObjectNamingStrategy.

Parameters
objectName the original JMX ObjectName
managedResource the MBean instance
Returns
  • an ObjectName with the MBean identity added
Throws
MalformedObjectNameException in case of an invalid object name specification

public static String getAttributeName (PropertyDescriptor property, boolean useStrictCasing)

Return the JMX attribute name to use for the given JavaBeans property.

When using strict casing, a JavaBean property with a getter method such as getFoo() translates to an attribute called Foo. With strict casing disabled, getFoo() would translate to just foo.

Parameters
property the JavaBeans property descriptor
useStrictCasing whether to use strict casing
Returns
  • the JMX attribute name to use

public static Class<?> getClassToExpose (Object managedBean)

Return the class or interface to expose for the given bean. This is the class that will be searched for attributes and operations (for example, checked for annotations).

This implementation returns the superclass for a CGLIB proxy and the class of the given bean else (for a JDK proxy or a plain bean class).

Parameters
managedBean the bean instance (might be an AOP proxy)
Returns
  • the bean class to expose

public static Class<?> getClassToExpose (Class<?> clazz)

Return the class or interface to expose for the given bean class. This is the class that will be searched for attributes and operations (for example, checked for annotations).

This implementation returns the superclass for a CGLIB proxy and the class of the given bean else (for a JDK proxy or a plain bean class).

Parameters
clazz the bean class (might be an AOP proxy class)
Returns
  • the bean class to expose

public static Class<?> getMBeanInterface (Class<?> clazz)

Return the Standard MBean interface for the given class, if any (that is, an interface whose name matches the class name of the given class but with suffix "MBean").

Parameters
clazz the class to check
Returns
  • the Standard MBean interface for the given class

public static Class<?> getMXBeanInterface (Class<?> clazz)

Return the Java 6 MXBean interface exists for the given class, if any (that is, an interface whose name ends with "MXBean" and/or carries an appropriate MXBean annotation).

Parameters
clazz the class to check
Returns
  • whether there is an MXBean interface for the given class

public static String[] getMethodSignature (Method method)

Create a String[] representing the argument signature of a method. Each element in the array is the fully qualified class name of the corresponding argument in the methods signature.

Parameters
method the method to build an argument signature for
Returns
  • the signature as array of argument types

public static boolean isMBean (Class<?> clazz)

Determine whether the given bean class qualifies as an MBean as-is.

This implementation checks for DynamicMBean classes as well as classes with corresponding "*MBean" interface (Standard MBeans) or corresponding "*MXBean" interface (Java 6 MXBeans).

Parameters
clazz the bean class to analyze
Returns
  • whether the class qualifies as an MBean
See Also

public static boolean isMXBeanSupportAvailable ()

Check whether MXBean support is available, i.e. whether we're running on Java 6 or above.

Returns
  • true if available; false otherwise

public static MBeanServer locateMBeanServer ()

Attempt to find a locally running MBeanServer. Fails if no MBeanServer can be found. Logs a warning if more than one MBeanServer found, returning the first one from the list.

Returns
  • the MBeanServer if found
Throws
MBeanServerNotFoundException if no MBeanServer could be found

public static MBeanServer locateMBeanServer (String agentId)

Attempt to find a locally running MBeanServer. Fails if no MBeanServer can be found. Logs a warning if more than one MBeanServer found, returning the first one from the list.

Parameters
agentId the agent identifier of the MBeanServer to retrieve. If this parameter is null, all registered MBeanServers are considered. If the empty String is given, the platform MBeanServer will be returned.
Returns
  • the MBeanServer if found
Throws
MBeanServerNotFoundException if no MBeanServer could be found

public static Class[] parameterInfoToTypes (MBeanParameterInfo[] paramInfo)

Convert an array of MBeanParameterInfo into an array of Class instances corresponding to the parameters.

Parameters
paramInfo the JMX parameter info
Returns
  • the parameter types as classes
Throws
ClassNotFoundException if a parameter type could not be resolved

public static Class[] parameterInfoToTypes (MBeanParameterInfo[] paramInfo, ClassLoader classLoader)

Convert an array of MBeanParameterInfo into an array of Class instances corresponding to the parameters.

Parameters
paramInfo the JMX parameter info
classLoader the ClassLoader to use for loading parameter types
Returns
  • the parameter types as classes
Throws
ClassNotFoundException if a parameter type could not be resolved