- Since:
- 1.6
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringThe name of thedefaultValuefield.static final StringThe name of theimmutableInfofield.static final StringThe name of theinterfaceClassNamefield.static final StringThe name of thelegalValuesfield.static final StringThe name of themaxValuefield.static final StringThe name of theminValuefield.static final StringThe name of themxbeanfield.static final StringThe name of theopenTypefield.static final StringThe name of theoriginalTypefield. -
Method Summary
Modifier and TypeMethodDescriptionstatic booleanisMXBeanInterface(Class<?> interfaceClass) Test whether an interface is an MXBean interface.static <T> TnewMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) Make a proxy for a Standard MBean in a local or remote MBean Server.static <T> TnewMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) Make a proxy for a Standard MBean in a local or remote MBean Server that may also support the methods ofNotificationEmitter.static <T> TnewMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) Make a proxy for an MXBean in a local or remote MBean Server.static <T> TnewMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) Make a proxy for an MXBean in a local or remote MBean Server that may also support the methods ofNotificationEmitter.
-
Field Details
-
DEFAULT_VALUE_FIELD
The name of thedefaultValuefield.- See Also:
-
IMMUTABLE_INFO_FIELD
The name of theimmutableInfofield.- See Also:
-
INTERFACE_CLASS_NAME_FIELD
The name of theinterfaceClassNamefield.- See Also:
-
LEGAL_VALUES_FIELD
The name of thelegalValuesfield.- See Also:
-
MAX_VALUE_FIELD
The name of themaxValuefield.- See Also:
-
MIN_VALUE_FIELD
The name of theminValuefield.- See Also:
-
MXBEAN_FIELD
The name of themxbeanfield.- See Also:
-
OPEN_TYPE_FIELD
The name of theopenTypefield.- See Also:
-
ORIGINAL_TYPE_FIELD
The name of theoriginalTypefield.- See Also:
-
-
Method Details
-
newMBeanProxy
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) Make a proxy for a Standard MBean in a local or remote MBean Server.
If you have an MBean Server
mbscontaining an MBean withObjectNamename, and if the MBean's management interface is described by the Java interfaceMyMBean, you can construct a proxy for the MBean like this:MyMBean proxy = JMX.newMBeanProxy(mbs, name, MyMBean.class);
Suppose, for example,
MyMBeanlooks like this:public interface MyMBean { public String getSomeAttribute(); public void setSomeAttribute(String value); public void someOperation(String param1, int param2); }Then you can execute:
proxy.getSomeAttribute()which will result in a call tombs.getAttribute(name, "SomeAttribute").proxy.setSomeAttribute("whatever")which will result in a call tombs.setAttribute(name, new Attribute("SomeAttribute", "whatever")).proxy.someOperation("param1", 2)which will be translated into a call tombs.invoke(name, "someOperation", <etc>).
The object returned by this method is a
ProxywhoseInvocationHandleris anMBeanServerInvocationHandler.This method is equivalent to
newMBeanProxy(connection, objectName, interfaceClass, false).- Type Parameters:
T- allows the compiler to know that if theinterfaceClassparameter isMyMBean.class, for example, then the return type isMyMBean.- Parameters:
connection- the MBean server to forward to.objectName- the name of the MBean withinconnectionto forward to.interfaceClass- the management interface that the MBean exports, which will also be implemented by the returned proxy.- Returns:
- the new proxy instance.
- Throws:
IllegalArgumentException- ifinterfaceClassis not a compliant MBean interface
-
newMBeanProxy
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) Make a proxy for a Standard MBean in a local or remote MBean Server that may also support the methods of
NotificationEmitter.This method behaves the same as
newMBeanProxy(MBeanServerConnection, ObjectName, Class), but additionally, ifnotificationEmitteristrue, then the MBean is assumed to be aNotificationBroadcasterorNotificationEmitterand the returned proxy will implementNotificationEmitteras well asinterfaceClass. A call toNotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)on the proxy will result in a call toMBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object), and likewise for the other methods ofNotificationBroadcasterandNotificationEmitter.- Type Parameters:
T- allows the compiler to know that if theinterfaceClassparameter isMyMBean.class, for example, then the return type isMyMBean.- Parameters:
connection- the MBean server to forward to.objectName- the name of the MBean withinconnectionto forward to.interfaceClass- the management interface that the MBean exports, which will also be implemented by the returned proxy.notificationEmitter- make the returned proxy implementNotificationEmitterby forwarding its methods viaconnection.- Returns:
- the new proxy instance.
- Throws:
IllegalArgumentException- ifinterfaceClassis not a compliant MBean interface
-
newMXBeanProxy
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) Make a proxy for an MXBean in a local or remote MBean Server.If you have an MBean Server
mbscontaining an MXBean withObjectNamename, and if the MXBean's management interface is described by the Java interfaceMyMXBean, you can construct a proxy for the MXBean like this:MyMXBean proxy = JMX.newMXBeanProxy(mbs, name, MyMXBean.class);
Suppose, for example,
MyMXBeanlooks like this:public interface MyMXBean { public String getSimpleAttribute(); public void setSimpleAttribute(String value); publicMemoryUsagegetMappedAttribute(); public void setMappedAttribute(MemoryUsage memoryUsage); public MemoryUsage someOperation(String param1, MemoryUsage param2); }Then:
proxy.getSimpleAttribute()will result in a call tombs.getAttribute(name, "SimpleAttribute").proxy.setSimpleAttribute("whatever")will result in a call tombs.setAttribute(name, new Attribute("SimpleAttribute", "whatever")).Because
Stringis a simple type, in the sense ofSimpleType, it is not changed in the context of an MXBean. The MXBean proxy behaves the same as a Standard MBean proxy (seenewMBeanProxy) for the attributeSimpleAttribute.proxy.getMappedAttribute()will result in a call tombs.getAttribute("MappedAttribute"). The MXBean mapping rules mean that the actual type of the attributeMappedAttributewill beCompositeDataand that is what thembs.getAttributecall will return. The proxy will then convert theCompositeDataback into the expected typeMemoryUsageusing the MXBean mapping rules.Similarly,
proxy.setMappedAttribute(memoryUsage)will convert theMemoryUsageargument into aCompositeDatabefore callingmbs.setAttribute.proxy.someOperation("whatever", memoryUsage)will convert theMemoryUsageargument into aCompositeDataand callmbs.invoke. The value returned bymbs.invokewill be also be aCompositeData, and the proxy will convert this into the expected typeMemoryUsageusing the MXBean mapping rules.
The object returned by this method is a
ProxywhoseInvocationHandleris anMBeanServerInvocationHandler.This method is equivalent to
newMXBeanProxy(connection, objectName, interfaceClass, false).- Type Parameters:
T- allows the compiler to know that if theinterfaceClassparameter isMyMXBean.class, for example, then the return type isMyMXBean.- Parameters:
connection- the MBean server to forward to.objectName- the name of the MBean withinconnectionto forward to.interfaceClass- the MXBean interface, which will also be implemented by the returned proxy.- Returns:
- the new proxy instance.
- Throws:
IllegalArgumentException- ifinterfaceClassis not acompliant MXBean interface
-
newMXBeanProxy
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) Make a proxy for an MXBean in a local or remote MBean Server that may also support the methods of
NotificationEmitter.This method behaves the same as
newMXBeanProxy(MBeanServerConnection, ObjectName, Class), but additionally, ifnotificationEmitteristrue, then the MXBean is assumed to be aNotificationBroadcasterorNotificationEmitterand the returned proxy will implementNotificationEmitteras well asinterfaceClass. A call toNotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)on the proxy will result in a call toMBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object), and likewise for the other methods ofNotificationBroadcasterandNotificationEmitter.- Type Parameters:
T- allows the compiler to know that if theinterfaceClassparameter isMyMXBean.class, for example, then the return type isMyMXBean.- Parameters:
connection- the MBean server to forward to.objectName- the name of the MBean withinconnectionto forward to.interfaceClass- the MXBean interface, which will also be implemented by the returned proxy.notificationEmitter- make the returned proxy implementNotificationEmitterby forwarding its methods viaconnection.- Returns:
- the new proxy instance.
- Throws:
IllegalArgumentException- ifinterfaceClassis not acompliant MXBean interface
-
isMXBeanInterface
Test whether an interface is an MXBean interface. An interface is an MXBean interface if it is public, annotated
@MXBeanor@MXBean(true)or if it does not have an@MXBeanannotation and its name ends with "MXBean".- Parameters:
interfaceClass- The candidate interface.- Returns:
- true if
interfaceClassis acompliant MXBean interface - Throws:
NullPointerException- ifinterfaceClassis null.
-