public class JMX extends java.lang.Object
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
DEFAULT_VALUE_FIELD
The name of the defaultValue field.
|
static java.lang.String |
IMMUTABLE_INFO_FIELD
The name of the immutableInfo field.
|
static java.lang.String |
INTERFACE_CLASS_NAME_FIELD
The name of the interfaceClassName field.
|
static java.lang.String |
LEGAL_VALUES_FIELD
The name of the legalValues field.
|
static java.lang.String |
MAX_VALUE_FIELD
The name of the maxValue field.
|
static java.lang.String |
MIN_VALUE_FIELD
The name of the minValue field.
|
static java.lang.String |
MXBEAN_FIELD
The name of the mxbean field.
|
static java.lang.String |
OPEN_TYPE_FIELD
The name of the openType field.
|
static java.lang.String |
ORIGINAL_TYPE_FIELD
The name of the originalType field.
|
| Modifier and Type | Method and Description |
|---|---|
static boolean |
isMXBeanInterface(java.lang.Class<?> iface)
Returns true if the given class represents an
MXBean
interface. |
static <T> T |
newMBeanProxy(MBeanServerConnection conn,
ObjectName name,
java.lang.Class<T> iface)
Returns a proxy for a standard management bean, using
the specified connection to access the named implementation.
|
static <T> T |
newMBeanProxy(MBeanServerConnection conn,
ObjectName name,
java.lang.Class<T> iface,
boolean bcast)
Returns a proxy for a standard management bean, using
the specified connection to access the named implementation,
as with
newMBeanProxy(MBeanServerConnection, ObjectName,
Class). |
static <T> T |
newMXBeanProxy(MBeanServerConnection conn,
ObjectName name,
java.lang.Class<T> iface)
Returns a proxy for a
MXBean, using the specified
connection to access the named implementation. |
static <T> T |
newMXBeanProxy(MBeanServerConnection conn,
ObjectName name,
java.lang.Class<T> iface,
boolean bcast)
Returns a proxy for a
MXBean, using
the specified connection to access the named implementation,
as with newMXBeanProxy(MBeanServerConnection, ObjectName,
Class). |
public static final java.lang.String DEFAULT_VALUE_FIELD
public static final java.lang.String IMMUTABLE_INFO_FIELD
public static final java.lang.String INTERFACE_CLASS_NAME_FIELD
public static final java.lang.String LEGAL_VALUES_FIELD
public static final java.lang.String MAX_VALUE_FIELD
public static final java.lang.String MIN_VALUE_FIELD
public static final java.lang.String MXBEAN_FIELD
public static final java.lang.String OPEN_TYPE_FIELD
public static final java.lang.String ORIGINAL_TYPE_FIELD
public static boolean isMXBeanInterface(java.lang.Class<?> iface)
public static <T> T newMBeanProxy(MBeanServerConnection conn, ObjectName name, java.lang.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, SomethingMBean, a call to
JMX.newMBeanProxy(server, name, SomethingMBean.class)
is made, where server is a local or remote management
server, and name is the registered ObjectName
of the implementation of 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, getName and setName define
an attribute, Name, so a call to getName()
will return the value of server.getAttribute(name,
"Name"), while setName(newName) will result in a
call to server.setAttribute(name, new Attribute("Name",
newName)). Finally, doStuff(), as an operation,
will cause the proxy to call MBeanServer.invoke(ObjectName,
String, Object[], String[]) as
server.invoke(name, "doStuff", null, null).
Calling this method is equivalent to calling
newMBeanProxy(MBeanServerConnection, ObjectName, Class,
boolean).
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.newMBeanProxy(MBeanServerConnection, ObjectName, Class,
boolean)public static <T> T newMBeanProxy(MBeanServerConnection conn, ObjectName name, java.lang.Class<T> iface, boolean bcast)
newMBeanProxy(MBeanServerConnection, ObjectName,
Class). In addition, the proxy returned by this method will
also implement NotificationEmitter if bcast is
true, under the assumption that the implementation referenced by
name implements this interface. Calls to the methods of
NotificationEmitter will be forwarded to the bean
implementation via the appropriate server methods.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.newMBeanProxy(MBeanServerConnection, ObjectName, Class)public static <T> T newMXBeanProxy(MBeanServerConnection conn, ObjectName name, java.lang.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, SomethingMXBean, a call to
JMX.newMXBeanProxy(server, name, SomethingMXBean.class)
is made, where server is a local or remote management
server, and name is the registered ObjectName
of the implementation of 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, getName and setName define
an attribute, Name, so a call to getName()
will return the value of server.getAttribute(name,
"Name"), while setName(newName) will result in a
call to server.setAttribute(name, new Attribute("Name",
newName)). As this uses a simple type, String, no
conversion is necessary.
The two methods, getStatistics and setStatistics
similarly define another attribute, Statistics. Calling
getStatistics() will cause a call to the server to be
made as before, 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
setStatistics(newStats). The list is converted into
an appropriate array before the call to
MBeanServerConnection.setAttribute(ObjectName, Attribute)
is made. Finally, a call to 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
newMXBeanProxy(MBeanServerConnection, ObjectName, Class,
boolean).
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.newMXBeanProxy(MBeanServerConnection, ObjectName, Class,
boolean)public static <T> T newMXBeanProxy(MBeanServerConnection conn, ObjectName name, java.lang.Class<T> iface, boolean bcast)
MXBean, using
the specified connection to access the named implementation,
as with newMXBeanProxy(MBeanServerConnection, ObjectName,
Class). In addition, the proxy returned by this method will
also implement NotificationEmitter if bcast is
true, under the assumption that the implementation referenced by
name implements this interface. Calls to the methods of
NotificationEmitter will be forwarded to the bean
implementation via the appropriate server methods.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.newMXBeanProxy(MBeanServerConnection, ObjectName, Class)