public class MBeanServerInvocationHandler extends Object implements InvocationHandler
 InvocationHandler将MBean管理界面中的方法通过MBean服务器转发到MBean。 
 给定一个MBeanServerConnection ,该ObjectName一个MBean的该MBean服务器中,并且Java接口Intf描述使用Standard MBean或MXBean的模式的MBean的管理接口,这个类可以用来构建一个代理在MBean 。 代理实现接口Intf ,使得其所有方法都通过MBean服务器转发到MBean。 
 如果InvocationHandler用于MXBean,则将方法的参数从MXBean接口中声明的类型转换为相应的映射类型,并将返回值从映射类型转换为声明类型。 例如,用该方法 
 public List<String> reverse(List<String> list); 
 并考虑到为映射类型List<String>是String[] ,将呼叫proxy.reverse(someList)将转换someList从List<String>到String[] ,调用MBean操作reverse ,然后转换返回String[]到List<String> 。 
 当使用此调用处理程序在代理上调用时,Object.toString(),Object.hashCode()或Object.equals(Object))方法仅在代理的MBean中出现时才转发到MBean服务器代理接口之一。 对于使用JMX.newMBeanProxy或JMX.newMXBeanProxy创建的代理,这意味着该方法必须出现在标准MBean或MXBean接口中。 否则这些方法具有以下行为: 
MBeanServerInvocationHandler之一是用类参数构造的,那么另一个必须用equals相同的类 equals才能返回true。 | 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() 
            
              如果为true,则代理为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 ,例如,如果您需要将不同的ClassLoader 提供给Proxy.newProxyInstance 。 
 此构造函数不适用于MXBean。 使用MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean) 。 此构造函数相当于new MBeanServerInvocationHandler(connection, objectName, false) 。 
connection - 使用此处理程序的代理的所有方法将 
            connection的MBean服务器连接。 
           objectName - 要转发哪些方法的MBean服务器内的MBean的名称。 
           public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean)
 调用处理程序,可以将方法通过MBean服务器转发到标准MBean或MXBean。 可以调用此构造函数,而不是依赖于JMX.newMXBeanProxy ,例如,如果您需要提供不同的ClassLoader到Proxy.newProxyInstance 。 
connection - 使用此处理程序的代理的所有方法都将转发的MBean服务器连接。 
           objectName - MBean服务器中要转发哪些方法的MBean的名称。 
           isMXBean - 如果为true,则代理为MXBean ,适当的映射将应用于方法参数和返回值。 
           public MBeanServerConnection getMBeanServerConnection()
使用此处理程序的代理方法转发的MBean服务器连接。
public ObjectName getObjectName()
MBean服务器中转发方法的MBean的名称。
public boolean isMXBean()
如果为true,则代理为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 - 要转发到的 
            connection内的MBean的名称。 
           interfaceClass - MBean导出的管理界面,也将由返回的代理实现。 
           notificationBroadcaster -使返回的代理实现NotificationEmitter经由其方法转发connection 。 
            要在通话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.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.