JavaTM Platform
Standard Ed. 6

javax.management
接口 MBeanServer

所有超级接口:
MBeanServerConnection
所有已知子接口:
MBeanServerForwarder

public interface MBeanServer
extends MBeanServerConnection

这是在代理端进行 MBean 操作的接口。它包含创建、注册和删除 MBean 所需的方法,以及用于已注册 MBean 的存取方法。这是 JMX 基础设施的核心组件。

用户代码通常不实现此接口。相反,应该使用 MBeanServerFactory 类中的某个方法获得实现此接口的对象。

添加到 MBean 服务器中的所有 MBean 都会变成得可以管理:通过连接到该 MBeanServer 的连接器/适配器可以远程访问其属性和操作。Java 对象不能在 MBean 服务器中进行注册,除非它是兼容 JMX 的 MBean。

在 MBean 服务器中注册或注销 MBean 时,会发出一个 MBeanServerNotification Notification。要将一个对象注册为 MBeanServerNotifications 的侦听器,则应该使用 MBeanServerDelegateObjectName 作为 ObjectName 参数调用 MBean 服务器方法 addNotificationListener。此 ObjectName 是:
JMImplementation:type=MBeanServerDelegate

MBeanServerFactory 类的 createMBeanServernewMBeanServer 方法所获得的对象会对其方法进行安全检查,如下所示:

首先,如果没有安全管理器(System.getSecurityManager() 为 null),则此接口的实现可以不进行任何检查。

假定存在安全管理器,或者实现选择进行检查,则按照以下内容进行检查;className 是目标 MBean 的 MBeanInfo.getClassName() 所返回的字符串。

如果安全检查失败,则该方法将抛出 SecurityException

对于可抛出 InstanceNotFoundException 的方法,它会为不存在的 MBean 抛出此异常,而不管权限如何。这是因为不存在的 MBean 没有 className

从以下版本开始:
1.5

方法摘要
 void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback)
          向已注册的 MBean 添加一个侦听器。
 void addNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback)
          向已注册的 MBean 添加一个侦听器。
 ObjectInstance createMBean(String className, ObjectName name)
          在 MBean 服务器中实例化并注册一个 MBean。
 ObjectInstance createMBean(String className, ObjectName name, Object[] params, String[] signature)
          在 MBean 服务器中实例化并注册一个 MBean。
 ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName)
          在 MBean 服务器中实例化并注册一个 MBean。
 ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Object[] params, String[] signature)
          在 MBean 服务器中实例化并注册一个 MBean。
 ObjectInputStream deserialize(ObjectName name, byte[] data)
          已过时。 使用 getClassLoaderFor 为反序列化获得合适的类加载器。
 ObjectInputStream deserialize(String className, byte[] data)
          已过时。 使用 getClassLoaderRepository() 来获得类加载器存储库并使用它进行反序列化。
 ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data)
          已过时。 使用 getClassLoader 为反序列化获得类加载器。
 Object getAttribute(ObjectName name, String attribute)
          获得指定 MBean 的特定属性值。
 AttributeList getAttributes(ObjectName name, String[] attributes)
          获得指定 MBean 的多个属性值。
 ClassLoader getClassLoader(ObjectName loaderName)
          返回指定的 ClassLoader
 ClassLoader getClassLoaderFor(ObjectName mbeanName)
          返回用于加载指定 MBean 的类的 ClassLoader
 ClassLoaderRepository getClassLoaderRepository()
          返回此 MBeanServer 的 ClassLoaderRepository。
 String getDefaultDomain()
          返回对 MBean 命名时使用的默认域。
 String[] getDomains()
          返回其中所有 MBean 当前已注册的域的列表。
 Integer getMBeanCount()
          返回 MBean 服务器中已注册的 MBean 的数目。
 MBeanInfo getMBeanInfo(ObjectName name)
          此方法发现了 MBean 为管理而公开的属性和操作。
 ObjectInstance getObjectInstance(ObjectName name)
          获得向 MBean 服务器注册的给定 MBean 的 ObjectInstance
 Object instantiate(String className)
          使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表实例化一个对象。
 Object instantiate(String className, Object[] params, String[] signature)
          使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表来实例化一个对象。
 Object instantiate(String className, ObjectName loaderName)
          使用由某个对象的 ObjectName 指定的类加载器来实例化该对象。
 Object instantiate(String className, ObjectName loaderName, Object[] params, String[] signature)
          实例化一个对象。
 Object invoke(ObjectName name, String operationName, Object[] params, String[] signature)
          在 MBean 上调用某个操作。
 boolean isInstanceOf(ObjectName name, String className)
          如果指定的 MBean 是指定类的一个实例,则返回 true;否则返回 false。
 boolean isRegistered(ObjectName name)
          检查某个 MBean(通过其对象名标识)是否已向 MBean 服务器注册。
 Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query)
          获得该 MBean 服务器所控制的 MBean。
 Set<ObjectName> queryNames(ObjectName name, QueryExp query)
          获得该 MBean 服务器所控制的 MBean 的名称。
 ObjectInstance registerMBean(Object object, ObjectName name)
          将某个预先存在的对象作为 MBean 注册到 MBean 服务器中。
 void removeNotificationListener(ObjectName name, NotificationListener listener)
          从已注册的 MBean 中移除一个侦听器。
 void removeNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback)
          从已注册的 MBean 中移除一个侦听器。
 void removeNotificationListener(ObjectName name, ObjectName listener)
          从已注册的 MBean 中移除一个侦听器。
 void removeNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback)
          从已注册的 MBean 中移除一个侦听器。
 void setAttribute(ObjectName name, Attribute attribute)
          设置指定 MBean 的特定属性值。
 AttributeList setAttributes(ObjectName name, AttributeList attributes)
          设置指定 MBean 的多个属性值。
 void unregisterMBean(ObjectName name)
          从 MBean 服务器中注销一个 MBean。
 

方法详细信息

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException
从接口 MBeanServerConnection 复制的描述

在 MBean 服务器中实例化并注册一个 MBean。MBean 服务器将使用其默认的 Loader Repository 来加载 MBean 的类。对象名与该 MBean 相关联。如果给定的对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration 接口并从 preRegister 方法中返回名称。

此方法等效于 createMBean(className, name, (Object[]) null, (String[]) null)

指定者:
接口 MBeanServerConnection 中的 createMBean
参数:
className - 要实例化的 MBean 的类名。
name - 该 MBean 的对象名。可以为 null。
返回:
一个 ObjectInstance,包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果包含的 ObjectNamen,则所包含的 Java 类名是 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
InstanceAlreadyExistsException - 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException - 如果 MBean 的 preRegisterMBeanRegistration 接口)方法已经抛出异常。不注册该 MBean。
MBeanException - 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException - 如果此类不是符合 JMX 的 MBean

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           ObjectName loaderName)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述

在 MBean 服务器中实例化并注册一个 MBean。通过其对象名标识使用的类加载器。对象名与该 MBean 相关联。如果加载器的对象名为 null,则将使用加载 MBean 服务器的 ClassLoader。如果给定的 MBean 对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration 接口并从 preRegister 方法中返回名称。

此方法等效于 createMBean(className, name, loaderName, (Object[]) null, (String[]) null)

指定者:
接口 MBeanServerConnection 中的 createMBean
参数:
className - 要实例化的 MBean 的类名。
name - 该 MBean 的对象名。可以为 null。
loaderName - 要使用的类加载器的对象名。
返回:
一个 ObjectInstance,包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果包含的 ObjectNamen,则所包含的 Java 类名是 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
InstanceAlreadyExistsException - 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException - 如果 MBean 的 preRegisterMBeanRegistration 接口)方法已经抛出异常。不注册该 MBean。
MBeanException - 如果 MBean 的构造方法已经抛出异常。
NotCompliantMBeanException - 如果此类不是符合 JMX 的 MBean。
InstanceNotFoundException - 如果未在 MBean 服务器中注册指定的类加载器。

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           Object[] params,
                           String[] signature)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException
从接口 MBeanServerConnection 复制的描述
在 MBean 服务器中实例化并注册一个 MBean。MBean 服务器将使用其默认的 Loader Repository 来加载 MBean 的类。对象名与该 MBean 相关联。如果给定的对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration 接口并从 preRegister 方法中返回名称。

指定者:
接口 MBeanServerConnection 中的 createMBean
参数:
className - 要实例化的 MBean 的类名。
name - 该 MBean 的对象名。可以为 null。
params - 一个数组,包含要调用的构造方法的参数。
signature - 一个数组,包含要调用的构造方法的签名。
返回:
一个 ObjectInstance,包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果包含的 ObjectNamen,则所包含的 Java 类名是 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
InstanceAlreadyExistsException - 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException - 如果 MBean 的 preRegisterMBeanRegistration 接口)方法已经抛出异常。不注册该 MBean。
MBeanException - 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException - 如果此类不是符合 JMX 的 MBean

createMBean

ObjectInstance createMBean(String className,
                           ObjectName name,
                           ObjectName loaderName,
                           Object[] params,
                           String[] signature)
                           throws ReflectionException,
                                  InstanceAlreadyExistsException,
                                  MBeanRegistrationException,
                                  MBeanException,
                                  NotCompliantMBeanException,
                                  InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述
在 MBean 服务器中实例化并注册一个 MBean。通过其对象名标识使用的类加载器。对象名与该 MBean 相关联。如果未指定加载器的对象名,则将使用加载 MBean 服务器的 ClassLoader。如果给定的 MBean 对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration 接口并从 preRegister 方法中返回名称。

指定者:
接口 MBeanServerConnection 中的 createMBean
参数:
className - 要实例化的 MBean 的类名。
name - 该 MBean 的对象名。可以为 null。
loaderName - 要使用的类加载器的对象名。
params - 一个数组,包含要调用的构造方法的参数。
signature - 一个数组,包含要调用的构造方法的签名。
返回:
一个 ObjectInstance,包含新实例化的 MBean 的 ObjectName 和 Java 类名。如果包含的 ObjectNamen,则所包含的 Java 类名是 getMBeanInfo(n).getClassName()
抛出:
ReflectionException - 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
InstanceAlreadyExistsException - 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException - 如果 MBean 的 preRegisterMBeanRegistration 接口)方法已经抛出异常。不注册该 MBean。
MBeanException - 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException - 如果此类不是符合 JMX 的 MBean
InstanceNotFoundException - 如果未在 MBean 服务器中注册指定的类加载器。

registerMBean

ObjectInstance registerMBean(Object object,
                             ObjectName name)
                             throws InstanceAlreadyExistsException,
                                    MBeanRegistrationException,
                                    NotCompliantMBeanException
将某个预先存在的对象作为 MBean 注册到 MBean 服务器中。如果给定的对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration 接口并从 preRegister 方法中返回名称。

参数:
object - 要作为 MBean 注册的 MBean。
name - MBean 的对象名。可以为 null。
返回:
一个 ObjectInstance,它包含新注册的 MBean 的 ObjectName 和 Java 类名。如果包含的 ObjectNamen,则包含的 Java 类名是 getMBeanInfo(n).getClassName()
抛出:
InstanceAlreadyExistsException - 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException - 如果 MBean 的 preRegisterMBeanRegistration 接口)方法已经抛出异常。不要注册该 MBean。
NotCompliantMBeanException - 如果此对象不是兼容 JMX 的 MBean
RuntimeOperationsException - 包装 java.lang.IllegalArgumentException:如果传入参数中的对象为 null 或者未指定对象名。

unregisterMBean

void unregisterMBean(ObjectName name)
                     throws InstanceNotFoundException,
                            MBeanRegistrationException
从接口 MBeanServerConnection 复制的描述
从 MBean 服务器中注销一个 MBean。通过 MBean 的对象名来标识 MBean。一旦调用了该方法,就无法再通过 MBean 的对象名来访问该 MBean。

指定者:
接口 MBeanServerConnection 中的 unregisterMBean
参数:
name - 要注销的 MBean 的对象名。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
MBeanRegistrationException - 如果 MBean 的 preDeregister(MBeanRegistration 接口)方法已经抛出异常。

getObjectInstance

ObjectInstance getObjectInstance(ObjectName name)
                                 throws InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述
获得向 MBean 服务器注册的给定 MBean 的 ObjectInstance

指定者:
接口 MBeanServerConnection 中的 getObjectInstance
参数:
name - MBean 的对象名。
返回:
name 所指定的 MBean 相关联的 ObjectInstance。包含的 ObjectNamename, 且所包含的类名是 getMBeanInfo(name).getClassName()
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。

queryMBeans

Set<ObjectInstance> queryMBeans(ObjectName name,
                                QueryExp query)
从接口 MBeanServerConnection 复制的描述
获得该 MBean 服务器所控制的 MBean。此方法允许获得下列任意内容:所有 MBean、由与 ObjectName 和/或 Query 表达式相匹配的模式所指定的一组 MBean、一个特定的 MBean。当对象名为 null 并且未指定域和键属性时,会选中所有对象(如果指定了查询,则进行过滤)。它返回已选中 MBean 的 ObjectInstance 对象集(包含 ObjectName 和 Java 类名)

指定者:
接口 MBeanServerConnection 中的 queryMBeans
参数:
name - 对象名模式,标识要检索的 MBean。如果为 null 或未指定域和键属性,则检索所有已注册的 MBean。
query - 应用到所选 MBean 的查询表达式。如果为 null,则不对所选的 MBean 应用查询表达式。
返回:
包含所选的 MBean 的 ObjectInstance 对象的集合。如果没有满足该查询的 MBean,则返回一个空列表。

queryNames

Set<ObjectName> queryNames(ObjectName name,
                           QueryExp query)
从接口 MBeanServerConnection 复制的描述
获得该 MBean 服务器所控制的 MBean 的名称。此方法允许获得下列任意内容:所有 MBean 的名称、由与 ObjectName 和/或 Query 表达式相匹配的模式所指定的一组 MBean 的名称、一个特定 MBean 的名称(等效于测试是否已注册某个 MBean)。当对象名为 null 并且未指定域和键属性时,会选中所有对象(如果指定了查询,则进行过滤)。它返回已选中的 MBean 的 ObjectNames 集合。

指定者:
接口 MBeanServerConnection 中的 queryNames
参数:
name - 对象名模式,标识要检索的 MBean 名称。如果为 null 或未指定域和键属性,则检索所有已注册的 MBean 的名称。
query - 应用到所选 MBean 的查询表达式。如果为 null,则不对选中 MBean 应用查询表达式。
返回:
一个集合,包含已选中 MBean 的 ObjectNames。如果没有满足该查询的 MBean,则返回一个空列表。

isRegistered

boolean isRegistered(ObjectName name)
从接口 MBeanServerConnection 复制的描述
检查某个 MBean(通过其对象名标识)是否已向 MBean 服务器注册。

指定者:
接口 MBeanServerConnection 中的 isRegistered
参数:
name - 要检查的 MBean 的对象名。
返回:
如果已在 MBean 服务器中注册了该 MBean,则返回 True;否则返回 false。

getMBeanCount

Integer getMBeanCount()
返回 MBean 服务器中已注册的 MBean 的数目。

指定者:
接口 MBeanServerConnection 中的 getMBeanCount
返回:
已注册的 MBean 数,包装在一个 Integer 中。如果调用者的权限是受限制的,则此数可能大于调用者可访问的 MBean 数。

getAttribute

Object getAttribute(ObjectName name,
                    String attribute)
                    throws MBeanException,
                           AttributeNotFoundException,
                           InstanceNotFoundException,
                           ReflectionException
从接口 MBeanServerConnection 复制的描述
获得指定 MBean 的特定属性值。通过 MBean 的对象名来标识 MBean。

指定者:
接口 MBeanServerConnection 中的 getAttribute
参数:
name - MBean 的对象名,要通过该对象名检索 MBean 的属性。
attribute - 指定要检索的属性名的 String。
返回:
检索到的属性值。
抛出:
MBeanException - 包装 MBean 的获取方法所抛出的异常。
AttributeNotFoundException - 如果指定的属性在 MBean 中是不可访问的。
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException - 包装试图调用设置方法时所抛出的 java.lang.Exception
另请参见:
MBeanServerConnection.setAttribute(javax.management.ObjectName, javax.management.Attribute)

getAttributes

AttributeList getAttributes(ObjectName name,
                            String[] attributes)
                            throws InstanceNotFoundException,
                                   ReflectionException
从接口 MBeanServerConnection 复制的描述
获得指定 MBean 的多个属性值。通过 MBean 的对象名来标识 MBean。

指定者:
接口 MBeanServerConnection 中的 getAttributes
参数:
name - MBean 的对象名,通过该对象名检索该 MBean 的属性。
attributes - 要检索的属性列表。
返回:
检索到的属性列表。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException - 试图调用 Dynamic MBean 的 getAttributes 方法时抛出的异常。
另请参见:
MBeanServerConnection.setAttributes(javax.management.ObjectName, javax.management.AttributeList)

setAttribute

void setAttribute(ObjectName name,
                  Attribute attribute)
                  throws InstanceNotFoundException,
                         AttributeNotFoundException,
                         InvalidAttributeValueException,
                         MBeanException,
                         ReflectionException
从接口 MBeanServerConnection 复制的描述
设置指定 MBean 的特定属性值。通过 MBean 的对象名来标识 MBean。

指定者:
接口 MBeanServerConnection 中的 setAttribute
参数:
name - 要设置其属性的 MBean 的名称。
attribute - 要设置的属性的标识及其要设置成的值。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
AttributeNotFoundException - 如果指定的属性在 MBean 中是不可访问的。
InvalidAttributeValueException - 如果为该属性指定的值无效。
MBeanException - 包装 MBean 的设置方法所抛出的异常。
ReflectionException - 包装试图调用设置方法时所抛出的 java.lang.Exception
另请参见:
MBeanServerConnection.getAttribute(javax.management.ObjectName, java.lang.String)

setAttributes

AttributeList setAttributes(ObjectName name,
                            AttributeList attributes)
                            throws InstanceNotFoundException,
                                   ReflectionException
从接口 MBeanServerConnection 复制的描述
设置指定 MBean 的多个属性值。通过 MBean 的对象名来标识 MBean。

指定者:
接口 MBeanServerConnection 中的 setAttributes
参数:
name - 要设置其属性的 MBean 的对象名。
attributes - 属性列表:要设置的属性的标识及其要设置成的值。
返回:
已设置的属性的列表,以及它们的新值。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException - 试图调用 Dynamic MBean 的 getAttributes 方法时抛出的异常。
另请参见:
MBeanServerConnection.getAttributes(javax.management.ObjectName, java.lang.String[])

invoke

Object invoke(ObjectName name,
              String operationName,
              Object[] params,
              String[] signature)
              throws InstanceNotFoundException,
                     MBeanException,
                     ReflectionException
从接口 MBeanServerConnection 复制的描述
在 MBean 上调用某个操作。

指定者:
接口 MBeanServerConnection 中的 invoke
参数:
name - MBean 的对象名,要在该 MBean 上调用方法。
operationName - 要调用的操作名。
params - 一个数组,包含调用操作时要设置的参数
signature - 包含操作签名的数组。用于加载类对象的类加载器与用于加载 MBean(要在其上调用操作)的类加载器相同。
返回:
该操作返回的对象,表示在指定 MBean 上调用该操作的结果。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
MBeanException - 包装在 MBean 上调用的方法所抛出的异常。
ReflectionException - 包装试图调用该方法时所抛出的 java.lang.Exception

getDefaultDomain

String getDefaultDomain()
从接口 MBeanServerConnection 复制的描述
返回对 MBean 命名时使用的默认域。如果用户未指定域,则将默认域名用作 MBean 的 ObjectName 的域部分。

指定者:
接口 MBeanServerConnection 中的 getDefaultDomain
返回:
默认域。

getDomains

String[] getDomains()
从接口 MBeanServerConnection 复制的描述

返回其中所有 MBean 当前已注册的域的列表。当且仅当至少有一个已注册的 MBean 并且其 ObjectName 的 getDomain() 等于某个字符串时,返回的数组中才有该字符串。返回数组中各个字符串的顺序是未定义的。

指定者:
接口 MBeanServerConnection 中的 getDomains
返回:
域列表。

addNotificationListener

void addNotificationListener(ObjectName name,
                             NotificationListener listener,
                             NotificationFilter filter,
                             Object handback)
                             throws InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述

向已注册的 MBean 添加一个侦听器。

MBeanServer 将 MBean 发出的通知转发到该侦听器。如果通知源是对 MBean 对象的引用,则 MBean 服务器将根据 MBean 的 ObjectName 替换它。否则不更改通知源。

指定者:
接口 MBeanServerConnection 中的 addNotificationListener
参数:
name - MBean 的名称,将在该 MBean 上添加侦听器。
listener - 侦听器对象,它将处理已注册的 MBean 所发出的通知。
filter - 过滤器对象。如果 filter 为 null,则处理通知前不执行过滤。
handback - 发出通知时要发送到侦听器的上下文。
抛出:
InstanceNotFoundException - 如果提供的 MBean 与任何已注册 MBean 都不匹配。
另请参见:
MBeanServerConnection.removeNotificationListener(ObjectName, NotificationListener), MBeanServerConnection.removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)

addNotificationListener

void addNotificationListener(ObjectName name,
                             ObjectName listener,
                             NotificationFilter filter,
                             Object handback)
                             throws InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述

向已注册的 MBean 添加一个侦听器。

MBeanServer 将 MBean 发出的通知转发到该侦听器。如果通知源是对 MBean 对象的引用,则 MBean 服务器将根据 MBean 的 ObjectName 替换它。否则不更改通知源。

接收通知的侦听器对象是在调用此方法时使用给定名称注册的。即使之后注销了该侦听器,它也将继续接收通知。

指定者:
接口 MBeanServerConnection 中的 addNotificationListener
参数:
name - MBean 的名称,将在该 MBean 上添加侦听器。
listener - 侦听器的对象名,它将处理已注册的 MBean 所发出的通知。
filter - 过滤器对象。如果 filter 为 null,则处理通知前不执行过滤。
handback - 发出通知时要发送到侦听器的上下文。
抛出:
InstanceNotFoundException - 如果通知侦听器或者通知广播器的 MBean 名与任何已注册的 MBean 都不匹配。
另请参见:
MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName), MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)

removeNotificationListener

void removeNotificationListener(ObjectName name,
                                ObjectName listener)
                                throws InstanceNotFoundException,
                                       ListenerNotFoundException
从接口 MBeanServerConnection 复制的描述
从已注册的 MBean 中移除一个侦听器。

如果可能使用不同过滤器或回调多次注册了该侦听器,则此方法将移除所有这些注册关系。

指定者:
接口 MBeanServerConnection 中的 removeNotificationListener
参数:
name - MBean 的名称,将移除该 MBean 上的侦听器。
listener - 要移除的侦听器的对象名。
抛出:
InstanceNotFoundException - 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException - 如果该侦听器未在 MBean 中注册。
另请参见:
MBeanServerConnection.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)

removeNotificationListener

void removeNotificationListener(ObjectName name,
                                ObjectName listener,
                                NotificationFilter filter,
                                Object handback)
                                throws InstanceNotFoundException,
                                       ListenerNotFoundException
从接口 MBeanServerConnection 复制的描述

从已注册的 MBean 中移除一个侦听器。

该 MBean 必须具有一个与给定 listenerfilterhandback 参数完全匹配的侦听器。如果存在多个这样的侦听器,则只移除一个。

当且仅当 filterhandback 在要移除的侦听器中为 null 时,这两个参数才可以为 null。

指定者:
接口 MBeanServerConnection 中的 removeNotificationListener
参数:
name - MBean 的名称,将移除该 MBean 上的侦听器。
listener - 要移除的侦听器的对象名。
filter - 添加侦听器时所指定的过滤器。
handback - 添加侦听器时所指定的回调。
抛出:
InstanceNotFoundException - 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException - 如果侦听器未在 MBean 中注册,或者没有用给定的过滤器和回调注册它。
另请参见:
MBeanServerConnection.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)

removeNotificationListener

void removeNotificationListener(ObjectName name,
                                NotificationListener listener)
                                throws InstanceNotFoundException,
                                       ListenerNotFoundException
从接口 MBeanServerConnection 复制的描述

从已注册的 MBean 中移除一个侦听器。

如果可能使用不同过滤器或回调多次注册了该侦听器,则此方法将移除所有这些注册关系。

指定者:
接口 MBeanServerConnection 中的 removeNotificationListener
参数:
name - MBean 的名称,将移除该 MBean 上的侦听器。
listener - 要移除的侦听器。
抛出:
InstanceNotFoundException - 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException - 如果该侦听器未在 MBean 中注册。
另请参见:
MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)

removeNotificationListener

void removeNotificationListener(ObjectName name,
                                NotificationListener listener,
                                NotificationFilter filter,
                                Object handback)
                                throws InstanceNotFoundException,
                                       ListenerNotFoundException
从接口 MBeanServerConnection 复制的描述

从已注册的 MBean 中移除一个侦听器。

该 MBean 必须具有一个与给定 listenerfilterhandback 参数完全匹配的侦听器。如果存在多个这样的侦听器,则只移除一个。

当且仅当 filterhandback 在要移除的侦听器中为 null 时,这两个参数才可以为 null。

指定者:
接口 MBeanServerConnection 中的 removeNotificationListener
参数:
name - MBean 的名称,将移除该 MBean 上的侦听器。
listener - 要移除的侦听器。
filter - 添加侦听器时所指定的过滤器。
handback - 添加侦听器时所指定的回调。
抛出:
InstanceNotFoundException - 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException - 如果侦听器未在 MBean 中注册,或者没有用给定的过滤器和回调注册它。
另请参见:
MBeanServerConnection.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)

getMBeanInfo

MBeanInfo getMBeanInfo(ObjectName name)
                       throws InstanceNotFoundException,
                              IntrospectionException,
                              ReflectionException
从接口 MBeanServerConnection 复制的描述
此方法发现了 MBean 为管理而公开的属性和操作。

指定者:
接口 MBeanServerConnection 中的 getMBeanInfo
参数:
name - 要分析的 MBean 名称
返回:
一个 MBeanInfo 实例,允许检索此 MBean 的所有属性和操作。
抛出:
InstanceNotFoundException - 如果未找到指定的 MBean。
IntrospectionException - 如果在 introspection 期间出现异常。
ReflectionException - 试图调用 Dynamic MBean 的 getMBeanInfo 方法时抛出的异常。

isInstanceOf

boolean isInstanceOf(ObjectName name,
                     String className)
                     throws InstanceNotFoundException
从接口 MBeanServerConnection 复制的描述

如果指定的 MBean 是指定类的一个实例,则返回 true;否则返回 false。

如果 name 不是 MBean 的名称,则此方法抛出 InstanceNotFoundException

否则,假定
X 是 name 所命名的 MBean、
L 是 X 的 ClassLoader、
N 是 X 的 MBeanInfo 中的类名。

如果 N 等于 className,则结果为 true。

如果 L 成功加载了 className,并且 X 是此类的一个实例,则结果为 true。

如果 L 成功加载了 N 和 className,并且由于第一个类而使第二个类是可分配的,则结果为 true。

否则结果为 false。

指定者:
接口 MBeanServerConnection 中的 isInstanceOf
参数:
name - MBean 的 ObjectName
className - 类名。
返回:
如果根据上述规则,指定的 MBean 是指定类的实例,则返回 true;否则返回 false。
抛出:
InstanceNotFoundException - 如果指定的 MBean 未在该 MBean 服务器中注册。
另请参见:
Class.isInstance(java.lang.Object)

instantiate

Object instantiate(String className)
                   throws ReflectionException,
                          MBeanException

使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表实例化一个对象。该对象的类应该具有公共构造方法。此方法返回对新创建对象的引用。新创建的对象未在该 MBean 服务器中注册。

此方法等效于 instantiate(className, (Object[]) null, (String[]) null)

参数:
className - 要实例化的对象的类名。
返回:
新实例化的对象。
抛出:
ReflectionException - 包装在试图调用该对象的构造方法时出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
MBeanException - 如果该对象的构造方法已经抛出异常
RuntimeOperationsException - 包装 java.lang.IllegalArgumentException:如果传入参数中的 className 为 null。

instantiate

Object instantiate(String className,
                   ObjectName loaderName)
                   throws ReflectionException,
                          MBeanException,
                          InstanceNotFoundException

使用由某个对象的 ObjectName 指定的类加载器来实例化该对象。如果加载器名为 null,则将使用加载 MBean 服务器的 ClassLoader。该对象的类应该具有公共构造方法。方法返回对新创建对象的引用。新创建的对象未在该 MBean 服务器中注册。

此方法等效于 instantiate(className, loaderName, (Object[]) null, (String[]) null)

参数:
className - 要实例化的 MBean 的类名。
loaderName - 要使用的类加载器的对象名。
返回:
新实例化的对象。
抛出:
ReflectionException - 包装在试图调用该对象的构造方法时出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
MBeanException - 如果该对象的构造方法已抛出异常。
InstanceNotFoundException - 如果指定的类加载器未在该 MBeanServer 中注册。
RuntimeOperationsException - 包装 java.lang.IllegalArgumentException:如果传入参数中的 className 为 null。

instantiate

Object instantiate(String className,
                   Object[] params,
                   String[] signature)
                   throws ReflectionException,
                          MBeanException

使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表来实例化一个对象。该对象的类应该具有公共构造方法。该调用返回对新创建对象的引用。新创建的对象未在该 MBean 服务器中注册。

参数:
className - 要实例化的对象的类名。
params - 一个数组,包含要调用的构造方法的参数。
signature - 一个数组,包含要调用的构造方法的签名。
返回:
新实例化的对象。
抛出:
ReflectionException - 包装在试图调用该对象的构造方法时出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
MBeanException - 如果该对象的构造方法已经抛出异常
RuntimeOperationsException - 包装 java.lang.IllegalArgumentException:如果传入参数中的 className 为 null。

instantiate

Object instantiate(String className,
                   ObjectName loaderName,
                   Object[] params,
                   String[] signature)
                   throws ReflectionException,
                          MBeanException,
                          InstanceNotFoundException

实例化一个对象。用该对象的对象名标识要使用的类加载器。如果加载器的对象名为 null,则将使用加载 MBean 服务器的 ClassLoader。该对象的类应该具有公共构造方法。该调用返回对新创建对象的引用。新创建的对象未在该 MBean 服务器中注册。

参数:
className - 要实例化的对象的类名。
params - 一个数组,包含要调用的构造方法的参数。
signature - 一个数组,包含要调用的构造方法的签名。
loaderName - 要使用的类加载器的对象名。
返回:
新实例化的对象。
抛出:
ReflectionException - 包装在试图调用该对象的构造方法时出现的 java.lang.ClassNotFoundExceptionjava.lang.Exception
MBeanException - 如果该对象的构造方法已经抛出异常
InstanceNotFoundException - 如果指定的类加载器未在该 MBean 服务器中注册。
RuntimeOperationsException - 包装 java.lang.IllegalArgumentException:如果传入参数中的 className 为 null。

deserialize

@Deprecated
ObjectInputStream deserialize(ObjectName name,
                                         byte[] data)
                              throws InstanceNotFoundException,
                                     OperationsException
已过时。 使用 getClassLoaderFor 为反序列化获得合适的类加载器。

在 MBean 的类加载器上下文中反序列化一个字节数组。

参数:
name - MBean 名,该 MBean 的类加载器应该用于反序列化。
data - 要被反序列化的字节数组。
返回:
反序列化后的对象流。
抛出:
InstanceNotFoundException - 如果未找到指定的 MBean。
OperationsException - 任何常规的输入/输出相关的异常。

deserialize

@Deprecated
ObjectInputStream deserialize(String className,
                                         byte[] data)
                              throws OperationsException,
                                     ReflectionException
已过时。 使用 getClassLoaderRepository() 来获得类加载器存储库并使用它进行反序列化。

在给定的 MBean 类加载器上下文中反序列化一个字节数组。通过 Class Loader Repository 加载类 className 来找到该类加载器。结果类的类加载器就是要使用的类加载器。

参数:
className - 类名,该类的类加载器应该用于反序列化。
data - 要被反序列化的字节数组。
返回:
反序列化后的对象流。
抛出:
OperationsException - 任何常规的输入/输出相关的异常。
ReflectionException - 如果无法由类加载器存储库加载指定的类

deserialize

@Deprecated
ObjectInputStream deserialize(String className,
                                         ObjectName loaderName,
                                         byte[] data)
                              throws InstanceNotFoundException,
                                     OperationsException,
                                     ReflectionException
已过时。 使用 getClassLoader 为反序列化获得类加载器。

在给定的 MBean 类加载器上下文中反序列化一个字节数组。该类加载器是加载名为 "className" 的类的类加载器。用于加载指定类的类加载器的名称是指定的。如果为 null,则使用 MBean 服务器的类加载器。

参数:
className - 类名,该类的类加载器应该用于反序列化。
data - 将被反序列化的字节数组。
loaderName - 用于加载指定类的类加载器的名称。如果为 null,则使用 MBean 服务器的类加载器。
返回:
反序列化后的对象流。
抛出:
InstanceNotFoundException - 如果未找到指定的类加载器 MBean。
OperationsException - 任何常规的输入/输出相关的异常。
ReflectionException - 无法由指定类加载器加载指定的类。

getClassLoaderFor

ClassLoader getClassLoaderFor(ObjectName mbeanName)
                              throws InstanceNotFoundException

返回用于加载指定 MBean 的类的 ClassLoader

参数:
mbeanName - MBean 的 ObjectName。
返回:
用于该 MBean 的 ClassLoader。如果 l 是该 MBean 的实际 ClassLoader,且 r 是返回的值,则: 这意味着出于安全或其他原因考虑,该 ClassLoader 可能被包装在另一个 ClassLoader 中。
抛出:
InstanceNotFoundException - 如果未找到指定的 MBean。

getClassLoader

ClassLoader getClassLoader(ObjectName loaderName)
                           throws InstanceNotFoundException

返回指定的 ClassLoader

参数:
loaderName - ClassLoader 的 ObjectName。可以为 null,在这种情况下,则返回该 MBean 服务器自己的 ClassLoader。
返回:
指定的 ClassLoader。如果 l 是具有该名称的实际 ClassLoader,且 r 是返回值,则如下所示: 这意味着出于安全或其他原因考虑,该 ClassLoader 可能被包装在另一个 ClassLoader 中。
抛出:
InstanceNotFoundException - 如果未找到指定的 ClassLoader。

getClassLoaderRepository

ClassLoaderRepository getClassLoaderRepository()

返回此 MBeanServer 的 ClassLoaderRepository。

返回:
此 MBeanServer 的 ClassLoaderRepository。

JavaTM Platform
Standard Ed. 6

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

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