public class JMX extends Object
Modifier and Type | Field and Description |
---|---|
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 字段的名称。
|
Modifier and Type | Method and Description |
---|---|
static boolean |
isMXBeanInterface(类<?> interfaceClass)
测试接口是否是MXBean接口。
|
static <T> T |
newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass)
在本地或远程MBean服务器中为标准MBean创建代理。
|
static <T> T |
newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationEmitter)
在本地或远程MBean服务器中为标准MBean创建代理,该服务器也可以支持 NotificationEmitter 的方法。
|
static <T> T |
newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass)
在本地或远程MBean服务器中为MXBean创建代理。
|
static <T> T |
newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationEmitter)
在本地或远程MBean服务器中为MXBean创建代理,该服务器也可能支持 NotificationEmitter 的方法。
|
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
maxValue
字段的名称。
public static final String MIN_VALUE_FIELD
minValue
字段的名称。
public static final String MXBEAN_FIELD
mxbean
字段的名称。
public static final String OPEN_TYPE_FIELD
openType
字段的名称。
public static final String ORIGINAL_TYPE_FIELD
originalType
字段的名称。
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass)
在本地或远程MBean服务器中为标准MBean创建代理。
如果你有一个MBean服务器mbs
包含一个MBean与ObjectName
name
,如果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);
}
然后你可以执行:
proxy.getSomeAttribute()
将导致呼叫mbs.
getAttribute
(name, "SomeAttribute")
。 proxy.setSomeAttribute("whatever")
将导致呼叫mbs.
setAttribute
(name, new Attribute("SomeAttribute", "whatever"))
。 proxy.someOperation("param1", 2)
将被转换成一个电话mbs.
invoke
(name, "someOperation", <etc>)
。 该方法返回的对象是Proxy
,其InvocationHandler
是MBeanServerInvocationHandler
。
此方法相当于newMBeanProxy(connection, objectName, interfaceClass, false)
。
T
- 允许编译器知道如果
interfaceClass
参数是
MyMBean.class
,那么返回类型是
MyMBean
。
connection
- 要转发到的MBean服务器。
objectName
- 要转发到的
connection
内的MBean的名称。
interfaceClass
- MBean导出的管理界面,也将由返回的代理实现。
IllegalArgumentException
- 如果
interfaceClass
不是
compliant MBean interface
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationEmitter)
在本地或远程MBean服务器中为标准MBean创建代理,该服务器也可以支持NotificationEmitter
的方法。
此方法的行为与newMBeanProxy(MBeanServerConnection, ObjectName, Class)
相同,但如果notificationEmitter
为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导出的管理界面,也将由返回的代理实现。
notificationEmitter
-使返回的代理实现NotificationEmitter
经由其方法转发connection
。
IllegalArgumentException
- 如果
interfaceClass
不是
compliant MBean interface
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass)
如果你有一个MBean服务器mbs
包含一个MXBean与ObjectName
name
,如果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的标准MBean代理(参见newMBeanProxy
) SimpleAttribute
。
proxy.getMappedAttribute()
将会调用mbs.getAttribute("MappedAttribute")
。 MXBean映射规则意味着属性MappedAttribute
的实际类型将为CompositeData
,这是mbs.getAttribute
调用将返回的。 然后,代理将使用MXBean映射规则将CompositeData
转换回预期类型MemoryUsage
。
同样, proxy.setMappedAttribute(memoryUsage)
将转换MemoryUsage
参数为CompositeData
之前调用mbs.setAttribute
。
proxy.someOperation("whatever", memoryUsage)
将MemoryUsage
参数转换为CompositeData
并调用mbs.invoke
。 由mbs.invoke
返回的值也将是CompositeData
,代理将使用MXBean映射规则将其转换为预期类型MemoryUsage
。
该方法返回的对象是Proxy
,其InvocationHandler
是MBeanServerInvocationHandler
。
此方法相当于newMXBeanProxy(connection, objectName, interfaceClass, false)
。
T
- 允许编译器知道如果
interfaceClass
参数是
MyMXBean.class
,那么返回类型是
MyMXBean
。
connection
- 要转发到的MBean服务器。
objectName
- 要转发到的
connection
内的MBean的名称。
interfaceClass
- MXBean接口,也将由返回的代理实现。
IllegalArgumentException
- 如果interfaceClass
不是compliant MXBean interface
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationEmitter)
在本地或远程MBean服务器中为MXBean创建代理,该服务器也可以支持NotificationEmitter
的方法。
此方法的行为与newMXBeanProxy(MBeanServerConnection, ObjectName, Class)
相同,但如果notificationEmitter
为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接口,也将由返回的代理实现。
notificationEmitter
-使返回的代理实现NotificationEmitter
经由其方法转发connection
。
IllegalArgumentException
- 如果interfaceClass
不是compliant MXBean interface
public static boolean isMXBeanInterface(类<?> interfaceClass)
测试接口是否是MXBean接口。 界面是一个MXBean界面,如果它是公共的,注释的是@MXBean
或@MXBean(true)
或者如果它没有一个@MXBean
注释,其名称以“ MXBean
”结尾。
interfaceClass
- 候选接口。
interfaceClass
是compliant MXBean interface
,则为true
NullPointerException
- 如果
interfaceClass
为空。