|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjavax.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 中的 invokeproxy - 在其上调用方法的代理实例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. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。