javax.management

接口
异常
注释
所有超级接口:
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.Cla