Package org.springframework.jmx.support
Class JmxUtils
- java.lang.Object
- org.springframework.jmx.support.JmxUtils
 
- public abstract class JmxUtils extends Object Collection of generic utility methods to support Spring JMX. Includes a convenient method to locate an MBeanServer.- Since:
- 1.2
- Author:
- Rob Harrop, Juergen Hoeller
- See Also:
- locateMBeanServer()
 
- Field Summary- Fields - Modifier and Type - Field - Description - static String- IDENTITY_OBJECT_NAME_KEYThe key used when extending an existing- ObjectNamewith the identity hash code of its corresponding managed resource.
 - Constructor Summary- Constructors - Constructor - Description - JmxUtils()
 - Method Summary- All Methods Static Methods Concrete Methods - Modifier and Type - Method - Description - static ObjectName- appendIdentityToObjectName(ObjectName objectName, Object managedResource)Append an additional key/value pair to an existing- ObjectNamewith the key being the static value- identityand 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(Class<?> clazz)Return the class or interface to expose for the given bean class.- static Class<?>- getClassToExpose(Object managedBean)Return the class or interface to expose for the given bean.- 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 String[]- getMethodSignature(Method method)Create a- String[]representing the argument signature of a method.- 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 boolean- isMBean(Class<?> clazz)Determine whether the given bean class qualifies as an MBean as-is.- 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- MBeanParameterInfointo an array of- Classinstances corresponding to the parameters.- static Class<?>[]- parameterInfoToTypes(MBeanParameterInfo[] paramInfo, ClassLoader classLoader)Convert an array of- MBeanParameterInfointo an array of- Classinstances corresponding to the parameters.
 
- Field Detail- IDENTITY_OBJECT_NAME_KEY- public static final String IDENTITY_OBJECT_NAME_KEY The key used when extending an existing- ObjectNamewith the identity hash code of its corresponding managed resource.- See Also:
- Constant Field Values
 
 
 - Constructor Detail- JmxUtils- public JmxUtils() 
 
 - Method Detail- locateMBeanServer- public static MBeanServer locateMBeanServer() throws MBeanServerNotFoundException Attempt to find a locally running- MBeanServer. Fails if no- MBeanServercan be found. Logs a warning if more than one- MBeanServerfound, returning the first one from the list.- Returns:
- the MBeanServerif found
- Throws:
- MBeanServerNotFoundException- if no- MBeanServercould be found
- See Also:
- MBeanServerFactory.findMBeanServer(java.lang.String)
 
 - locateMBeanServer- public static MBeanServer locateMBeanServer(@Nullable String agentId) throws MBeanServerNotFoundException Attempt to find a locally running- MBeanServer. Fails if no- MBeanServercan be found. Logs a warning if more than one- MBeanServerfound, 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 MBeanServerif found
- Throws:
- MBeanServerNotFoundException- if no- MBeanServercould be found
- See Also:
- MBeanServerFactory.findMBeanServer(String)
 
 - parameterInfoToTypes- @Nullable public static Class<?>[] parameterInfoToTypes(@Nullable MBeanParameterInfo[] paramInfo) throws ClassNotFoundException Convert an array of- MBeanParameterInfointo an array of- Classinstances 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
 
 - parameterInfoToTypes- @Nullable public static Class<?>[] parameterInfoToTypes(@Nullable MBeanParameterInfo[] paramInfo, @Nullable ClassLoader classLoader) throws ClassNotFoundException Convert an array of- MBeanParameterInfointo an array of- Classinstances 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
 
 - getMethodSignature- 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
 
 - getAttributeName- 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
 
 - appendIdentityToObjectName- public static ObjectName appendIdentityToObjectName(ObjectName objectName, Object managedResource) throws MalformedObjectNameException Append an additional key/value pair to an existing- ObjectNamewith the key being the static value- identityand 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- ObjectNamefor each distinct instance of a particular bean or class. Useful when generating- ObjectNamesat 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
- See Also:
- ObjectUtils.getIdentityHexString(Object)
 
 - getClassToExpose- 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
- See Also:
- ClassUtils.getUserClass(Object)
 
 - getClassToExpose- 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
- See Also:
- ClassUtils.getUserClass(Class)
 
 - isMBean- public static boolean isMBean(@Nullable Class<?> clazz) Determine whether the given bean class qualifies as an MBean as-is.- This implementation checks for - DynamicMBeanclasses 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:
- MBeanExporter.isMBean(Class)
 
 - getMBeanInterface- @Nullable public static Class<?> getMBeanInterface(@Nullable 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
 
 - getMXBeanInterface- @Nullable public static Class<?> getMXBeanInterface(@Nullable 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