java.lang.Object javax.management.JMX
public class JMX
JMX API 提供的静态方法。该类没有实例。
字段摘要 | |
---|---|
static String |
DEFAULT_VALUE_FIELD defaultValue 字段的名称。 |
static String |
IMMUTABLE_INFO_FIELD immutableInfo 字段的名称。 |
static String |
INTERFACE_CLASS_NAME_FIELD interfaceClassName 字段的名称。 |
static String |
LEGAL_VALUES_FIELD legalValues 字段的名称。 |
static String |
MAX_VALUE_FIELD maxValue 字段的名称。 |
static String |
MIN_VALUE_FIELD minValue 字段的名称。 |
static String |
MXBEAN_FIELD mxbean 字段的名称。 |
static String |
OPEN_TYPE_FIELD openType 字段的名称。 |
static String |
ORIGINAL_TYPE_FIELD originalType 字段的名称。 |
方法摘要 | ||
---|---|---|
static boolean |
isMXBeanInterface(Class<?> interfaceClass) 测试某接口是否是 MXBean 接口。 |
|
static
|
newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 在本地或远程 MBean Server 中为 Standard MBean 构造一个代理。 |
|
static
|
newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster) 在同样支持 NotificationEmitter 方法的本地或远程 MBean Server 中为 Standard MBean 构造一个代理。 |
|
static
|
newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 在本地或远程 MBean Server 中为 MXBean 构造一个代理。 |
|
static
|
newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster) 在同样支持 NotificationEmitter 方法的本地或远程 MBean Server 中为 MXBean 构造一个代理。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final String DEFAULT_VALUE_FIELD
defaultValue
字段的名称。
public static final String IMMUTABLE_INFO_FIELD
immutableInfo
字段的名称。
public static final String INTERFACE_CLASS_NAME_FIELD
interfaceClassName
字段的名称。
public static final String LEGAL_VALUES_FIELD
legalValues
字段的名称。
public static final String MAX_VALUE_FIELD
public static final String MIN_VALUE_FIELD
public static final String MXBEAN_FIELD
public static final String OPEN_TYPE_FIELD
public static final String ORIGINAL_TYPE_FIELD
originalType
字段的名称。
方法详细信息 |
---|
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass)
在本地或远程 MBean Server 中为 Standard MBean 构造一个代理。
如果 MBean 服务器 mbs
包含 ObjectName
为 name
的 MBean,并且如果该 MBean 的管理接口由 Java 接口 MyMBean
描述,则可以像下面这样为该 MBean 构造一个代理:
MyMBean proxy = JMX.newMBeanProxy(mbs, name, MyMBean.class);
例如,假定 MyMBean
如下所示:
public interface MyMBean { public String getSomeAttribute(); public void setSomeAttribute(String value); public void someOperation(String param1, int param2); }
那么可以执行:
mbs.
getAttribute
(name, "SomeAttribute")
的 proxy.getSomeAttribute()
。 mbs.
setAttribute
(name, new Attribute("SomeAttribute", "whatever"))
的 proxy.setSomeAttribute("whatever")
。 mbs.
invoke
(name, "someOperation", <etc>)
的调用的 proxy.someOperation("param1", 2)
。 此方法返回的对象是一个其 InvocationHandler
为 MBeanServerInvocationHandler
的 Proxy
。
此方法等效于 newMBeanProxy(connection, objectName, interfaceClass, false)
。
T
- 让编译器知道如果
interfaceClass
参数为
MyMBean.class
,则返回类型为
MyMBean
。
connection
- 作为转发目的地的目标 MBean 服务器。
objectName
- 作为转发目的地的
connection
中的 MBean 名。
interfaceClass
- MBean 输出的管理接口,也由返回的代理来实现。
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
在同样支持 NotificationEmitter
方法的本地或远程 MBean Server 中为 Standard MBean 构造一个代理。
此方法的行为与 newMBeanProxy(MBeanServerConnection, ObjectName, Class)
相同,但除此以外,如果 notificationBroadcaster
为 true
,则假定 MBean 为 NotificationBroadcaster
或 NotificationEmitter
,并且返回的代理将实现 NotificationEmitter
和 interfaceClass
。在该代理上调用 NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
将导致对 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
的调用,对于 NotificationBroadcaster
和 NotificationEmitter
的其他方法也是如此。
T
- 让编译器知道如果
interfaceClass
参数为
MyMBean.class
,则返回类型为
MyMBean
。
connection
- 作为转发目的地的目标 MBean 服务器。
objectName
- 作为转发目的地的
connection
中的 MBean 名。
interfaceClass
- MBean 输出的管理接口,也由返回的代理来实现。
notificationBroadcaster
- 使返回的代理实现
NotificationEmitter
,方法是通过
connection
转发其方法。
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass)
在本地或远程 MBean Server 中为 MXBean 构造一个代理。
如果 MBean 服务器 mbs
包含 ObjectName
为 name
的 MXBean,并且如果该 MXBean 的管理接口由 Java 接口 MyMXBean
所描述,则可以像下面这样为该 MXBean 构造一个代理:
MyMXBean proxy = JMX.newMXBeanProxy(mbs, name, MyMXBean.class);
例如,假定 MyMXBean
如下所示:
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);
}
那么:
proxy.getSimpleAttribute()
将导致调用 mbs.
getAttribute
(name, "SimpleAttribute")
。
proxy.setSimpleAttribute("whatever")
将导致调用 mbs.
setAttribute
(name, new Attribute("SimpleAttribute", "whatever"))
。
因为 String
是一个简单类型(即 SimpleType
),所以不会在 MXBean 的上下文中更改它。MXBean 代理的行为与属性 SimpleAttribute
的 Standard MBean 代理(请参阅 newMBeanProxy
)的行为相同。
proxy.getMappedAttribute()
将导致调用 mbs.getAttribute("MappedAttribute")
。MXBean 映射规则意味着属性 MappedAttribute
的实际类型将是 CompositeData
,并且这是 mbs.getAttribute
调用将返回的内容。该代理然后会使用 MXBean 映射规则将 CompositeData
转换回所期望类型的 MemoryUsage
。
类似地,proxy.setMappedAttribute(memoryUsage)
将在调用 mbs.setAttribute
之前将 MemoryUsage
参数转换为 CompositeData
。
proxy.someOperation("whatever", memoryUsage)
将 MemoryUsage
参数转换为 CompositeData
并调用 mbs.invoke
。mbs.invoke
返回的值也将是 CompositeData
,并且代理会使用 MXBean 映射规则将此值转换为所期望类型的 MemoryUsage
。
此方法返回的对象是一个 InvocationHandler
为 MBeanServerInvocationHandler
的 Proxy
。
此方法等效于 newMXBeanProxy(connection, objectName, interfaceClass, false)
。
T
- 让编译器知道如果
interfaceClass
参数为
MyMXBean.class
,则返回类型为
MyMXBean
。
connection
- 作为转发目的地的目标 MBean 服务器。
objectName
- 作为转发目的地的
connection
中的 MBean 名。
interfaceClass
- MXBean 接口,也由返回的代理来实现。
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster)
在同样支持 NotificationEmitter
方法的本地或远程 MBean Server 中为 MXBean 构造一个代理。
此方法的行为与 newMXBeanProxy(MBeanServerConnection, ObjectName, Class)
相同,但除此以外,如果 notificationBroadcaster
为 true
,则假定 MXBean 为 NotificationBroadcaster
或 NotificationEmitter
,并且返回的代理将实现 NotificationEmitter
和 interfaceClass
。在该代理上调用 NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
将导致对 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
的调用,对于 NotificationBroadcaster
和 NotificationEmitter
的其他方法也是如此。
T
- 让编译器知道如果
interfaceClass
参数为
MyMXBean.class
,则返回类型为
MyMXBean
。
connection
- 作为转发目的地的目标 MBean 服务器。
objectName
- 作为转发目的地的
connection
中的 MBean 名。
interfaceClass
- MXBean 接口,也由返回的代理来实现。
notificationBroadcaster
- 使返回的代理实现
NotificationEmitter
,方法是通过
connection
转发它的方法。
public static boolean isMXBeanInterface(Class<?> interfaceClass)
测试某接口是否是 MXBean 接口。如果接口为已注释的 @MXBean
或 @MXBean(true)
,或者接口没有 @MXBean
注释且其名称以 "MXBean
" 结尾,则该接口为 MXBean 接口。
interfaceClass
- 侯选接口。
interfaceClass
是一个接口且满足所描述的条件,则返回 true。
NullPointerException
- 如果
interfaceClass
为 null。