public class MBeanServerInvocationHandler extends Object implements InvocationHandler
InvocationHandler
转发方法的MBean的管理界面通过MBean服务器MBean。
给定一个MBeanServerConnection
,在MBean的ObjectName
MBean服务器,以及描述使用模式,一个标准MBean或MXBean MBean管理界面的Intf
java接口,这个类可以用来构造MBean代理。代理实现的接口Intf
,其方法是通过MBean服务器转发的MBean。
如果是一个InvocationHandler
MXBean,然后一个方法的参数的类型声明的MXBean接口为相应的映射类型转换,并返回值转换成映射的类型声明的类型。例如,与method
public List<String> reverse(List<String> list);
鉴于映射类型List<String>
是String[]
,电话proxy.reverse(someList)
将someList
从List<String>
到String[]
,叫MBean reverse
操作,然后将返回到一个List<String>
String[]
。
方法对象。tostring(),对象。hashcode(),或对象。等于(对象),当调用代理使用这种调用处理程序,转发到MBean服务器作为代理的MBean方法看来只有一个代理的接口。一个代理JMX.newMBeanProxy
或JMX.newMXBeanProxy
创建,这意味着该方法必须出现在标准MBean或MXBean接口。否则,这些方法有以下行为:
MBeanServerInvocationHandler
s与类
论点然后其他必须与equals
回到真实的同一类
构筑起。Constructor and Description |
---|
MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
调用处理程序,提出了通过MBean服务器标准MBean。
|
MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
调用处理程序,可以通过MBean服务器向标准MBean或MXBean。
|
Modifier and Type | Method and Description |
---|---|
MBeanServerConnection |
getMBeanServerConnection()
MBean服务器的连接通过一个代理使用这种处理方法转发。
|
ObjectName |
getObjectName()
姓名的MBean在MBean服务器转发的方法。
|
Object |
invoke(Object proxy, 方法 method, Object[] args)
在代理实例上处理方法调用,并返回结果。
|
boolean |
isMXBean()
如果是真的,代理是一个MXBean,和适当的映射应用于方法参数和返回值。
|
static <T> T |
newProxyInstance(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationBroadcaster)
返回一个代理实现了转发的方法通过给定的MBean服务器的命名MBean接口。
|
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
调用处理程序,提出了通过MBean服务器标准MBean。此构造函数可以被称为不依赖JMX.newMBeanProxy
,例如如果你需要Proxy.newProxyInstance
供应不同的ClassLoader
。
此构造函数不适合一个MXBean。使用MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean)
。此构造函数相当于new MBeanServerInvocationHandler(connection, objectName, false)
。
connection
的MBean服务器的连接通过一个代理使用这种处理方法会转发。
objectName
- MBean的名字在MBean服务器的方法将被转发。
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
调用处理程序,可以通过MBean服务器向标准MBean或MXBean。此构造函数可以被称为不依赖JMX.newMXBeanProxy
,例如如果你需要Proxy.newProxyInstance
供应不同的ClassLoader
。
connection
的MBean服务器的连接通过一个代理使用这种处理方法会转发。
objectName
- MBean的名字在MBean服务器的方法将被转发。
isMXBean
-如果是真的,代理是一个
MXBean
,和适当的映射将应用于方法参数和返回值。
public MBeanServerConnection getMBeanServerConnection()
MBean服务器的连接通过一个代理使用这种处理方法转发。
public ObjectName getObjectName()
姓名的MBean在MBean服务器转发的方法。
public boolean isMXBean()
如果是真的,代理是一个MXBean,和适当的映射应用于方法参数和返回值。
public static <T> T newProxyInstance(MBeanServerConnection connection, ObjectName objectName, 类<T> interfaceClass, boolean notificationBroadcaster)
返回一个代理实现了转发的方法通过给定的MBean服务器的命名MBean接口。为1.6,方法JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class)
和JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)
是首选的方法。
这种方法相当于Proxy.newProxyInstance
(interfaceClass.getClassLoader(), interfaces, handler)
。这里handler
是new MBeanServerInvocationHandler(connection, objectName)
的结果,和interfaces
是一个数组,一个元素,如果这是真是假,两notificationBroadcaster
。interfaces
的第一要素是interfaceClass
和第二,如果存在,是NotificationEmitter.class
。
T
-允许编译器知道如果
interfaceClass
参数
MyMBean.class
,例如,然后返回类型是
MyMBean
。
connection
的MBean服务器转发到。
objectName
- MBean的名字在
connection
期待。
interfaceClass
的管理界面,MBean的出口,这也将返回到代理的实现。
connection
使
notificationBroadcaster
-返回的代理实现
NotificationEmitter
。一个叫
NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
在代理将调用
MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
,同样为
NotificationBroadcaster
和
NotificationEmitter
其他方法。
JMX.newMBeanProxy(MBeanServerConnection, ObjectName, Class, boolean)
public Object invoke(Object proxy, 方法 method, Object[] args) throws Throwable
InvocationHandler
invoke
接口
InvocationHandler
proxy
-代理实例,调用的方法
method
代理实例的
方法
实例。声明类的
方法
对象将接口的方法声明,这可能是一个超接口代理接口,代理类继承的方法。
args
-包含在方法上通过代理实例调用的实参的值对象的数组,或
null
如果接口方法不需要参数。原始类型的实参是包裹在适当的原始包装类的实例,如
java.lang.Integer
或
java.lang.Boolean
。
null
和接口方法的返回类型是原始的,然后
NullPointerException
将由法对代理实例调用抛出。如果该方法返回的值是不兼容的接口的方法声明的返回类型如上所述,一个
ClassCastException
将由法对代理实例调用抛出。
Throwable
-把从方法上代理实例调用的例外。异常的类型必须是可转让或任何的异常类型的接口方法的
throws
条款或对未检查的异常类型
java.lang.RuntimeException
或
java.lang.Error
宣布。如果用这种方法,是不可转让的任何异常类型的接口方法的
throws
条款声明抛出检查异常,然后
UndeclaredThrowableException
包含异常,通过该方法抛出将由法对代理实例调用抛出。
UndeclaredThrowableException
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.