- 所有已实现的接口:
InvocationHandler
InvocationHandler 通过 MBean 服务将 MBean 管理接口中的方法转发到 MBean。
给定 MBeanServerConnection 、该 MBean 服务中的 MBean 的 ObjectName 以及使用标准 MBean 或 MXBean 的模式描述 MBean 的管理接口的 Java 接口 Intf,此类可用于构造 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) 时,仅当它出现在代理的接口之一。对于使用 JMX.newMBeanProxy 或 JMX.newMXBeanProxy 创建的代理,这意味着该方法必须出现在 Standard MBean 或 MXBean 接口中。否则这些方法具有以下行为:
- toString() 返回代理的字符串表示
- hashCode() 返回代理的哈希码,使得两个相同的代理具有相同的哈希码
- equals(Object) 当且仅当 Object 参数与此代理属于同一代理类时才返回 true,并且 MBeanServerInvocationHandler 具有相同的 MBeanServerConnection 和 ObjectName;如果其中一个
MBeanServerInvocationHandler是用Class参数构造的,那么另一个必须是用相同的Class构造的,因为equals才能返回 true。
- 自从:
- 1.5
-
构造方法总结
构造方法构造方法描述MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName) 通过 MBean 服务将方法转发到标准 MBean 的调用处理程序。MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean) 可以通过 MBean 服务将方法转发到标准 MBean 或 MXBean 的调用处理程序。 -
方法总结
修饰符和类型方法描述MBean 服务连接,使用此处理程序的代理方法通过该连接被转发。将方法转发到的 MBean 服务中的 MBean 的名称。处理代理实例上的方法调用并返回结果。booleanisMXBean()如果为 true,则代理适用于 MXBean,并且将适当的映射应用于方法参数和返回值。static <T> TnewProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class<T> interfaceClass, boolean notificationBroadcaster) 通过给定的 MBean 服务将其方法转发到指定的 MBean,返回一个实现给定接口的代理。
-
构造方法详细信息
-
MBeanServerInvocationHandler
通过 MBean 服务将方法转发到标准 MBean 的调用处理程序。可以调用此构造函数而不是依赖
JMX.newMBeanProxy,例如,如果您需要提供不同的ClassLoader到Proxy.newProxyInstance。此构造函数不适用于 MXBean。为此使用
MBeanServerInvocationHandler(MBeanServerConnection, ObjectName, boolean)。此构造函数等效于new MBeanServerInvocationHandler(connection, objectName, false)。- 参数:
connection- MBean 服务连接,使用此处理程序的代理的所有方法都将通过该连接转发。objectName- 方法将转发到的 MBean 服务中的 MBean 的名称。
-
MBeanServerInvocationHandler
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName, boolean isMXBean) 可以通过 MBean 服务将方法转发到标准 MBean 或 MXBean 的调用处理程序。可以调用此构造函数而不是依赖
JMX.newMXBeanProxy,例如,如果您需要提供不同的ClassLoader到Proxy.newProxyInstance。- 参数:
connection- MBean 服务连接,使用此处理程序的代理的所有方法都将通过该连接转发。objectName- 方法将转发到的 MBean 服务中的 MBean 的名称。isMXBean- 如果为真,则代理用于MXBean,并且适当的映射将应用于方法参数和返回值。- 自从:
- 1.6
-
-
方法详情
-
getMBeanServerConnection
MBean 服务连接,使用此处理程序的代理方法通过该连接被转发。
- 返回:
- MBean 服务连接。
- 自从:
- 1.6
-
getObjectName
将方法转发到的 MBean 服务中的 MBean 的名称。
- 返回:
- 对象名称。
- 自从:
- 1.6
-
isMXBean
public boolean isMXBean()如果为 true,则代理适用于 MXBean,并且将适当的映射应用于方法参数和返回值。
- 返回:
- 代理是否用于 MXBean。
- 自从:
- 1.6
-
newProxyInstance
public static <T> T newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class <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- 通过connection转发其方法,使返回的代理实现NotificationEmitter。在代理上调用NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)将导致调用MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object),对于NotificationBroadcaster和NotificationEmitter的其他方法也是如此。- 返回:
- 新的代理实例。
- 参见:
-
invoke
从接口InvocationHandler复制的描述处理代理实例上的方法调用并返回结果。当在与其关联的代理实例上调用方法时,将在调用处理程序上调用此方法。- 指定者:
invoke在接口InvocationHandler中- 参数:
proxy- 调用该方法的代理实例method- 与在代理实例上调用的接口方法对应的Method实例。Method对象的声明类将是声明该方法的接口,它可能是代理类通过其继承该方法的代理接口的超接口。args- 包含在代理实例的方法调用中传递的参数值的对象数组,或者null如果接口方法不带参数。原始类型的参数包装在适当的原始包装类的实例中,例如java.lang.Integer或java.lang.Boolean。- 返回:
-
从代理实例上的方法调用返回的值。如果接口方法声明的返回类型是原始类型,则该方法返回的值必须是对应原始包装类的实例;否则,它必须是可分配给声明的返回类型的类型。如果此方法返回的值为
null并且接口方法的返回类型为原始类型,则代理实例上的方法调用将抛出NullPointerException。如果此方法返回的值与上述接口方法声明的返回类型不兼容,则代理实例上的方法调用将抛出ClassCastException。 - 抛出:
Throwable- 从代理实例的方法调用中抛出的异常。异常的类型必须可分配给接口方法的throws子句中声明的任何异常类型或未检查的异常类型java.lang.RuntimeException或java.lang.Error。如果此方法抛出的已检查异常无法分配给接口方法的throws子句中声明的任何异常类型,则包含此方法抛出的异常的UndeclaredThrowableException将由方法调用抛出代理实例。- 参见:
-