java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

javax.management
类 MBeanServerInvocationHandler

java.lang.Object
  继承者 javax.management.MBeanServerInvocationHandler
所有已实现的接口:
InvocationHandler

public class MBeanServerInvocationHandler
extends Object
implements InvocationHandler

在 MBean 的管理接口中从 MBean 服务器向 MBean 转发方法的 InvocationHandler

在给定 MBeanServerConnection、该 MBean 服务器内某个 MBean 的 ObjectName,以及一个 Java 接口 Intf(使用 Standard MBean 的模式描述 MBean 的管理接口)的情况下,此类可用于构造 MBean 的代理。该代理实现接口 Intf,这样可通过 MBean 服务器向 MBean 转发其所有方法。

如果 MBean 服务器 mbs 包含具有 ObjectNamename 的 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 是一个 NotificationBroadcasterNotificationEmitter,并且返回的代理将实现 NotificationEmitter。在该代理上调用 NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object) 将导致对 MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) 的调用,对于 NotificationBroadcasterNotificationEmitter 的其他方法也是如此。

当使用此调用处理程序在代理上调用方法 Object.toString()Object.hashCode()Object.equals(Object) 时,会以一种与在已代理 MBean 上调用方法相同的形式将其转发到 MBean 服务器。仅当该 MBean 在其管理接口中声明了这些方法时才能如此操作。

从以下版本开始:
1.5

构造方法摘要
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
 

构造方法详细信息

MBeanServerInvocationHandler

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。
方法详细信息

newProxyInstance

public static Object newProxyInstance(MBeanServerConnection connection,
                                      ObjectName objectName,
                                      Class interfaceClass,
                                      boolean notificationBroadcaster)

返回一个代理,该代理通过将代理的方法从给定的 MBean 服务器转发到指定 MBean 来实现给定的接口。

此方法等效于 Proxy.newProxyInstance(interfaceClass.getClassLoader(), interfaces, handler)。其中 handlernew MBeanServerInvocationHandler(connection, objectName) 的结果,而 interfaces 是一个数组,如果 notificationBroadcaster 为 false,则该数组有一个元素,如果为 true,则该数组有两个元素。interfaces 的第一个元素是 interfaceClass,第二个(如果有)是 NotificationEmitter.class

参数:
connection - 要转发到的目标 MBean 服务器。
objectName - 在要转发到的 connection 内的 MBean 名。
interfaceClass - MBean 输出的管理接口,也由返回的代理来实现。
notificationBroadcaster - 使返回的代理实现 NotificationEmitter,方法是通过 connection 转发其方法。
返回:
新的代理实例。

invoke

public Object invoke(Object proxy,
                     Method method,
                     Object[] args)
              throws Throwable
从接口 InvocationHandler 复制的描述
在代理实例上处理方法调用并返回结果。在与方法关联的代理实例上调用方法时,将在调用处理程序上调用此方法。

指定者:
接口 InvocationHandler 中的 invoke
参数:
proxy - 在其上调用方法的代理实例
method - 对应于在代理实例上调用的接口方法的 Method 实例。Method 对象的声明类将是在其中声明方法的接口,该接口可以是代理类赖以继承方法的代理接口的超接口。
args - 包含传入代理实例上方法调用的参数值的对象数组,如果接口方法不使用参数,则为 null。基本类型的参数被包装在适当基本包装器类(如 java.lang.Integerjava.lang.Boolean)的实例中。
返回:
从代理实例的方法调用返回的值。如果接口方法的声明返回类型是基本类型,则此方法返回的值一定是相应基本包装对象类的实例;否则,它一定是可分配到声明返回类型的类型。如果此方法返回的值为 null 并且接口方法的返回类型是基本类型,则代理实例上的方法调用将抛出 NullPointerException。否则,如果此方法返回的值与上述接口方法的声明返回类型不兼容,则代理实例上的方法调用将抛出 ClassCastException
抛出:
Throwable - 从代理实例上的方法调用抛出的异常。该异常的类型必须可以分配到在接口方法的 throws 子句中声明的任一异常类型或未经检查的异常类型 java.lang.RuntimeExceptionjava.lang.Error。如果此方法抛出经过检查的异常,该异常不可分配到在接口方法的 throws 子句中声明的任一异常类型,代理实例的方法调用将抛出包含此方法曾抛出的异常的 UndeclaredThrowableException
另请参见:
UndeclaredThrowableException

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策