|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.management.MBeanServerInvocationHandler
public class MBeanServerInvocationHandler
在 MBean 的管理接口中从 MBean 服务器向 MBean 转发方法的 InvocationHandler
。
在给定 MBeanServerConnection
、该 MBean 服务器内某个 MBean 的 ObjectName
,以及一个 Java 接口 Intf
(使用 Standard MBean 的模式描述 MBean 的管理接口)的情况下,此类可用于构造 MBean 的代理。该代理实现接口 Intf
,这样可通过 MBean 服务器向 MBean 转发其所有方法。
如果 MBean 服务器 mbs
包含具有 ObjectName
为 name
的 MBean,并且如果该 MBean 的管理接口由 Java 接口 Intf
所描述,则可以象下面这样为该 MBean 构造一个代理:
Intf proxy = (Intf)
MBeanServerInvocationHandler.newProxyInstance
(mbs,
name,
Intf.class,
false);
例如,假定 Intf
如下:
public interface Intf { 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>)
。
如果 newProxyInstance
的最后一个参数是 true
,则假定该 MBean 是一个 NotificationBroadcaster
或 NotificationEmitter
,并且返回的代理将实现 NotificationEmitter
。在该代理上调用 NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
将导致对 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
的调用,对于 NotificationBroadcaster
和 NotificationEmitter
的其他方法也是如此。
当使用此调用处理程序在代理上调用方法 Object.toString()
、Object.hashCode()
和 Object.equals(Object)
时,会以一种与在已代理 MBean 上调用方法相同的形式将其转发到 MBean 服务器。仅当该 MBean 在其管理接口中声明了这些方法时才能如此操作。
构造方法摘要 | |
---|---|
MBeanServerInvocationHandler(MBeanServerConnection connection,
ObjectName objectName)
通过 MBean 服务器转发方法的调用处理程序。 |
方法摘要 | |
---|---|
Object |
invoke(Object proxy,
Method method,
Object[] args)
在代理实例上处理方法调用并返回结果。 |
static Object |
newProxyInstance(MBeanServerConnection connection,
ObjectName objectName,
Class interfaceClass,
boolean notificationBroadcaster)
返回一个代理,该代理通过将代理的方法从给定的 MBean 服务器转发到指定 MBean 来实现给定的接口。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public MBeanServerInvocationHandler(MBeanServerConnection connection, ObjectName objectName)
通过 MBean 服务器转发方法的调用处理程序。可能会调用此构造方法,而不是依赖于 newProxyInstance(javax.management.MBeanServerConnection, javax.management.ObjectName, java.lang.Class, boolean)
,例如在需要为 Proxy.newProxyInstance
提供一个不同 ClassLoader
的情况下。
connection
- MBean 服务器连接,通过此连接转发所有使用此处理程序的代理方法。objectName
- MBean 服务器内的 MBean 名称,各个方法将转发到该 MBean。方法详细信息 |
---|
public static Object newProxyInstance(MBeanServerConnection connection, ObjectName objectName, Class interfaceClass, boolean notificationBroadcaster)
返回一个代理,该代理通过将代理的方法从给定的 MBean 服务器转发到指定 MBean 来实现给定的接口。
此方法等效于 Proxy.newProxyInstance
(interfaceClass.getClassLoader(), interfaces, handler)
。其中 handler
是 new MBeanServerInvocationHandler(connection, objectName)
的结果,而 interfaces
是一个数组,如果 notificationBroadcaster
为 false,则该数组有一个元素,如果为 true,则该数组有两个元素。interfaces
的第一个元素是 interfaceClass
,第二个(如果有)是 NotificationEmitter.class
。
connection
- 要转发到的目标 MBean 服务器。objectName
- 在要转发到的 connection
内的 MBean 名。interfaceClass
- MBean 输出的管理接口,也由返回的代理来实现。notificationBroadcaster
- 使返回的代理实现 NotificationEmitter
,方法是通过 connection
转发其方法。
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
InvocationHandler
复制的描述
InvocationHandler
中的 invoke
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
。UndeclaredThrowableException
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。