- 自:
- 1.6
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
defaultValue
字段的名称。static final String
immutableInfo
字段的名称。static final String
interfaceClassName
字段的名称。static final String
legalValues
字段的名称。static final String
maxValue
字段的名称。static final String
minValue
字段的名称。static final String
mxbean
字段的名称。static final String
openType
字段的名称。static final String
originalType
字段的名称。 -
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
isMXBeanInterface
(Class<?> interfaceClass) 测试接口是否为MXBean接口。static <T> T
newMBeanProxy
(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 在本地或远程MBean服务器中为标准MBean创建代理。static <T> T
newMBeanProxy
(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) 在本地或远程MBean服务器中为标准MBean创建代理,该代理还可以支持NotificationEmitter
的方法。static <T> T
newMXBeanProxy
(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 在本地或远程MBean服务器中为MXBean创建代理。static <T> T
newMXBeanProxy
(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationEmitter) 在本地或远程MBean服务器中为MXBean创建代理,该代理还可以支持NotificationEmitter
的方法。
-
Field Details
-
DEFAULT_VALUE_FIELD
defaultValue
字段的名称。- 参见:
-
IMMUTABLE_INFO_FIELD
immutableInfo
字段的名称。- 参见:
-
INTERFACE_CLASS_NAME_FIELD
interfaceClassName
字段的名称。- 参见:
-
LEGAL_VALUES_FIELD
legalValues
字段的名称。- 参见:
-
MAX_VALUE_FIELD
maxValue
字段的名称。- 参见:
-
MIN_VALUE_FIELD
minValue
字段的名称。- 参见:
-
MXBEAN_FIELD
mxbean
字段的名称。- 参见:
-
OPEN_TYPE_FIELD
openType
字段的名称。- 参见:
-
ORIGINAL_TYPE_FIELD
originalType
字段的名称。- 参见:
-
-
Method Details
-
newMBeanProxy
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 在本地或远程MBean服务器中为标准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
不是符合MBean接口
-
newMBeanProxy
public static <T> T newMBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<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
- 通过connection
转发其方法使返回的代理实现NotificationEmitter
。 - 返回:
- 新代理实例。
- 抛出:
-
IllegalArgumentException
- 如果interfaceClass
不是符合MBean接口
-
newMXBeanProxy
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass) 创建本地或远程MBean服务器中MXBean的代理。如果您有一个包含具有
ObjectName
name
的MXBean的MBean服务器mbs
,并且如果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
是一个简单类型,在MXBean的上下文中不会改变。MXBean代理的行为与标准MBean代理相同(请参阅newMBeanProxy
)对于属性SimpleAttribute
。 -
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
。
此方法返回的对象是一个
Proxy
,其InvocationHandler
是一个MBeanServerInvocationHandler
。此方法等效于
newMXBeanProxy(connection, objectName, interfaceClass, false)
。- 类型参数:
-
T
- 允许编译器知道如果interfaceClass
参数是MyMXBean.class
,则返回类型是MyMXBean
。 - 参数:
-
connection
- 要转发到的MBean服务器。 -
objectName
- 要转发到的connection
中的MBean的名称。 -
interfaceClass
- 将由返回的代理实现的MXBean接口。 - 返回:
- 新代理实例。
- 抛出:
-
IllegalArgumentException
- 如果interfaceClass
不是符合MXBean接口
-
-
newMXBeanProxy
public static <T> T newMXBeanProxy(MBeanServerConnection connection, ObjectName objectName, Class<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)
,其他方法也类似。- 类型参数:
-
T
- 允许编译器知道如果interfaceClass
参数是MyMXBean.class
,则返回类型是MyMXBean
。 - 参数:
-
connection
- 要转发到的MBean服务器。 -
objectName
- 要转发到的connection
中的MBean的名称。 -
interfaceClass
- 将由返回的代理实现的MXBean接口。 -
notificationEmitter
- 使返回的代理通过connection
转发其方法来实现NotificationEmitter
。 - 返回:
- 新代理实例。
- 抛出:
-
IllegalArgumentException
- 如果interfaceClass
不是符合MXBean接口
-
isMXBeanInterface
测试接口是否为MXBean接口。如果接口是公共的,并且带有
@MXBean
或@MXBean(true)
注解,或者如果它没有@MXBean
注解并且其名称以"MXBean
"结尾,则接口是MXBean接口。- 参数:
-
interfaceClass
- 候选接口。 - 返回:
-
如果
interfaceClass
是符合MXBean接口
,则返回true。 - 抛出:
-
NullPointerException
- 如果interfaceClass
为null。
-