|
Java™ Platform Standard Ed. 7 DRAFT ea-b76 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjavax.management.JMX
public class JMX extends Object
Static methods from the JMX API. There are no instances of this class.
| Modifier and Type | Class and Description |
|---|---|
static class |
JMX.MBeanOptions
Options to apply to an MBean proxy or to an instance of StandardMBean. |
static class |
JMX.ProxyOptions
Options to apply to an MBean proxy. |
| Modifier and Type | Method and Description | |
|---|---|---|
static String |
getSpecificationVersion(MBeanServerConnection mbsc,
ObjectName mbeanName)
Return the version of the JMX specification that a (possibly remote) MBean Server is using. |
|
static boolean |
isMXBeanInterface(Class<?> interfaceClass)
Test whether an interface is an MXBean interface. |
|
static boolean |
isNotificationSource(Object mbean)
Test if an MBean can emit notifications. |
|
static
|
newMBeanProxy(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass)
Make a proxy for a Standard MBean in a local or remote MBean Server. |
|
static
|
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. |
|
static
|
newMBeanProxy(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
JMX.MBeanOptions opts)
Make a proxy for a Standard MBean or MXBean in a local or remote MBean Server that may also support the methods of NotificationEmitter and (for an MXBean) that may define custom MXBean
type mappings. |
|
static
|
newMXBeanProxy(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass)
Make a proxy for an MXBean in a local or remote MBean Server. |
|
static
|
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public static final String DEFAULT_VALUE_FIELD
defaultValue field.
public static final String DESCRIPTION_RESOURCE_BUNDLE_BASE_NAME_FIELD
descriptionResourceBundleBaseName field.
public static final String DESCRIPTION_RESOURCE_KEY_FIELD
descriptionResourceKey field.
public static final String EXCEPTIONS_FIELD
exceptions field.
public static final String IMMUTABLE_INFO_FIELD
immutableInfo field.
public static final String INTERFACE_CLASS_NAME_FIELD
interfaceClassName field.
public static final String LEGAL_VALUES_FIELD
legalValues field.
public static final String LOCALE_FIELD
locale
field.
public static final String MAX_VALUE_FIELD
maxValue field.
public static final String MIN_VALUE_FIELD
minValue field.
public static final String MXBEAN_FIELD
mxbean field.
public static final String MXBEAN_MAPPING_FACTORY_CLASS_FIELD
mxbeanMappingFactoryClass field.
public static final String OPEN_TYPE_FIELD
openType field.
public static final String ORIGINAL_TYPE_FIELD
originalType field.
public static final String SET_EXCEPTIONS_FIELD
setExceptions field.
public static final String OBJECT_NAME_TEMPLATE
objectNameTemplate field.
| Method Detail |
|---|
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 mbs containing an MBean
with ObjectName name, and if the MBean's
management interface is described by the Java interface
MyMBean, you can construct a proxy for the MBean like
this:
MyMBean proxy = JMX.newMBeanProxy(mbs, name, MyMBean.class);
Suppose, for example, MyMBean looks 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 to mbs.getAttribute(name, "SomeAttribute").
proxy.setSomeAttribute("whatever") which will result
in a call to mbs.setAttribute(name, new Attribute("SomeAttribute", "whatever")).
proxy.someOperation("param1", 2) which will be
translated into a call to mbs.invoke(name, "someOperation", <etc>).
The object returned by this method is a
Proxy whose InvocationHandler is an
MBeanServerInvocationHandler.
This method is equivalent to newMBeanProxy(connection, objectName, interfaceClass,
false).
T - allows the compiler to know that if the interfaceClass parameter is MyMBean.class, for
example, then the return type is MyMBean.connection - the MBean server to forward to.objectName - the name of the MBean within
connection to forward to.interfaceClass - the management interface that the MBean
exports, which will also be implemented by the returned proxy.
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, if notificationEmitter is true, then the MBean is assumed to be a NotificationBroadcaster or NotificationEmitter and the
returned proxy will implement NotificationEmitter as
well as interfaceClass. A call to NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object) on the proxy
will result in a call to MBeanServerConnection.addNotificationListener(ObjectName,
NotificationListener, NotificationFilter, Object), and
likewise for the other methods of NotificationBroadcaster and NotificationEmitter.
This method is equivalent to newMBeanProxy(connection, objectName, interfaceClass, opts), where
opts is a JMX.ProxyOptions representing the
notificationEmitter parameter.
T - allows the compiler to know that if the interfaceClass parameter is MyMBean.class, for
example, then the return type is MyMBean.connection - the MBean server to forward to.objectName - the name of the MBean within
connection to forward to.interfaceClass - the management interface that the MBean
exports, which will also be implemented by the returned proxy.notificationEmitter - make the returned proxy
implement NotificationEmitter by forwarding its methods
via connection.
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 mbs containing an
MXBean with ObjectName name, and if the
MXBean's management interface is described by the Java
interface MyMXBean, you can construct a proxy for
the MXBean like this:
MyMXBean proxy = JMX.newMXBeanProxy(mbs, name, MyMXBean.class);
Suppose, for example, MyMXBean looks like this:
public interface MyMXBean {
public String getSimpleAttribute();
public void setSimpleAttribute(String value);
public MemoryUsage getMappedAttribute();
public void setMappedAttribute(MemoryUsage memoryUsage);
public MemoryUsage someOperation(String param1, MemoryUsage param2);
}
Then:
proxy.getSimpleAttribute() will result in a
call to mbs.getAttribute(name, "SimpleAttribute").
proxy.setSimpleAttribute("whatever") will result
in a call to mbs.setAttribute(name,
new Attribute("SimpleAttribute", "whatever")).
Because String is a simple type, in the
sense of SimpleType, it
is not changed in the context of an MXBean. The MXBean
proxy behaves the same as a Standard MBean proxy (see
newMBeanProxy) for the attribute SimpleAttribute.
proxy.getMappedAttribute() will result in a call
to mbs.getAttribute("MappedAttribute"). The MXBean
mapping rules mean that the actual type of the attribute MappedAttribute will be CompositeData and
that is what the mbs.getAttribute call will return.
The proxy will then convert the CompositeData back into
the expected type MemoryUsage using the MXBean mapping
rules.
Similarly, proxy.setMappedAttribute(memoryUsage)
will convert the MemoryUsage argument into a CompositeData before calling mbs.setAttribute.
proxy.someOperation("whatever", memoryUsage)
will convert the MemoryUsage argument into a CompositeData and call mbs.invoke. The value returned
by mbs.invoke will be also be a CompositeData,
and the proxy will convert this into the expected type MemoryUsage using the MXBean mapping rules.
This method is equivalent to newMXBeanProxy(connection, objectName, interfaceClass,
false).
T - allows the compiler to know that if the interfaceClass parameter is MyMXBean.class, for
example, then the return type is MyMXBean.connection - the MBean server to forward to.objectName - the name of the MBean within
connection to forward to.interfaceClass - the MXBean interface,
which will also be implemented by the returned proxy.
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, if notificationEmitter is true, then the MXBean is assumed to be a NotificationBroadcaster or NotificationEmitter and the
returned proxy will implement NotificationEmitter as
well as interfaceClass. A call to NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object) on the proxy
will result in a call to MBeanServerConnection.addNotificationListener(ObjectName,
NotificationListener, NotificationFilter, Object), and
likewise for the other methods of NotificationBroadcaster and NotificationEmitter.
This method is equivalent to newMBeanProxy(connection, objectName, interfaceClass, opts), where
opts is a JMX.ProxyOptions where the MXBeanMappingFactory
property is
MXBeanMappingFactory.forInterface(interfaceClass) and the notificationEmitter property
is equal to the notificationEmitter parameter.
T - allows the compiler to know that if the interfaceClass parameter is MyMXBean.class, for
example, then the return type is MyMXBean.connection - the MBean server to forward to.objectName - the name of the MBean within
connection to forward to.interfaceClass - the MXBean interface,
which will also be implemented by the returned proxy.notificationEmitter - make the returned proxy
implement NotificationEmitter by forwarding its methods
via connection.
public static <T> T newMBeanProxy(MBeanServerConnection connection,
ObjectName objectName,
Class<T> interfaceClass,
JMX.MBeanOptions opts)
Make a proxy for a Standard MBean or MXBean in a local or remote MBean
Server that may also support the methods of NotificationEmitter and (for an MXBean) that may define custom MXBean
type mappings.
This method behaves the same as
newMBeanProxy(MBeanServerConnection, ObjectName, Class) or
newMXBeanProxy(MBeanServerConnection, ObjectName, Class),
according as opts.isMXBean() is respectively false or true; but
with the following changes based on opts.
opts.isNotificationEmitter() is true, then the MBean is assumed to be a NotificationBroadcaster or NotificationEmitter and the
returned proxy will implement NotificationEmitter as
well as interfaceClass. A call to NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object) on the proxy
will result in a call to MBeanServerConnection.addNotificationListener(ObjectName,
NotificationListener, NotificationFilter, Object), and
likewise for the other methods of NotificationBroadcaster and NotificationEmitter.opts.getMXBeanMappingFactory() is not null,
then the mappings it defines will be applied to convert between
arbitrary Java types and Open Types.The object returned by this method is a
Proxy whose InvocationHandler is an
MBeanServerInvocationHandler. This means that it is possible
to retrieve the parameters that were used to produce the proxy. If the
proxy was produced as follows...
FooMBean proxy =
JMX.newMBeanProxy(connection, objectName, FooMBean.class, opts);
...then you can get the MBeanServerInvocationHandler like
this...
MBeanServerInvocationHandler mbsih = (MBeanServerInvocationHandler)
Proxy.getInvocationHandler(proxy);
...and you can retrieve connection, objectName, and opts using the getMBeanServerConnection(), getObjectName(), and
getMBeanOptions()
methods on mbsih. You can retrieve FooMBean.class
using proxy.getClass().getInterfaces().
T - allows the compiler to know that if the interfaceClass parameter is MyMXBean.class, for
example, then the return type is MyMXBean.connection - the MBean server to forward to.objectName - the name of the MBean within
connection to forward to.interfaceClass - the Standard MBean or MXBean interface,
which will also be implemented by the returned proxy.opts - the options to apply for this proxy. Can be null,
in which case default options are applied.IllegalArgumentException - if interfaceClass is not a
valid MXBean interface.public static boolean isMXBeanInterface(Class<?> interfaceClass)
Test whether an interface is an MXBean interface.
An interface is an MXBean interface if it is annotated
@MXBean or @MXBean(true)
or if it does not have an @MXBean annotation
and its name ends with "MXBean".
interfaceClass - The candidate interface.interfaceClass is an interface and
meets the conditions described.NullPointerException - if interfaceClass is null.
public static boolean isNotificationSource(Object mbean)
throws NotCompliantMBeanException
Test if an MBean can emit notifications. An MBean can emit
notifications if either it implements NotificationBroadcaster
(perhaps through its child interface NotificationEmitter), or
it uses resource
injection to obtain an instance of SendNotification
through which it can send notifications.
mbean - an MBean object.NotCompliantMBeanException - if the given object is not
a valid MBean.
public static String getSpecificationVersion(MBeanServerConnection mbsc,
ObjectName mbeanName)
throws IOException
Return the version of the JMX specification that a (possibly remote)
MBean Server is using. The JMX specification described in this
documentation is version 2.0. The earlier versions that might be
reported by this method are 1.0, 1.1, 1.2, and 1.4. (There is no 1.3.)
All of these versions and all future versions can be compared using
String.compareTo(String). So, for example, to tell if
mbsc is running at least version 2.0 you can write:
String version = JMX.getSpecificationVersion(mbsc, null);
boolean atLeast2dot0 = (version.compareTo("2.0") >= 0);
A remote MBean Server might be running an earlier version of the JMX API, and in that case certain features might not be available in it.
The version of the MBean Server mbsc is not necessarily
the version of all namespaces within that MBean Server, for example
if some of them use JMXRemoteNamespace. To determine the version of the namespace
that a particular MBean is in, give its name as the mbeanName
parameter.
mbsc - a connection to an MBean Server.mbeanName - the name of an MBean within that MBean Server, or null.
If non-null, the namespace of this name, as determined by
JMXNamespaces.getContainingNamespace, is the one whose specification
version will be returned.IllegalArgumentException - if mbsc is null, or if
mbeanName includes a wildcard character (* or ?)
in its namespace.IOException - if the version cannot be obtained, either because
there is a communication problem or because the remote MBean Server
does not have the appropriate attribute.MBeanServerDelegateMBean.getSpecificationVersion()
|
Java™ Platform Standard Ed. 7 DRAFT ea-b76 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms.