模块  java.management
软件包  javax.management

Interface MBeanServer

    • 方法详细信息

      • createMBean

        ObjectInstance createMBean​(String className,
                                   ObjectName name,
                                   ObjectName loaderName)
                            throws ReflectionException,
                                   InstanceAlreadyExistsException,
                                   MBeanRegistrationException,
                                   MBeanException,
                                   NotCompliantMBeanException,
                                   InstanceNotFoundException

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

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

        如果此方法成功创建MBean,则如above所述发送通知。

        Specified by:
        createMBean在界面 MBeanServerConnection
        参数
        className - 要实例化的MBean的类名。
        name - MBean的对象名称。 可能为空。
        loaderName - 要使用的类加载器的对象名称。
        结果
        ObjectInstance ,包含ObjectName和新实例化的MBean的Java类名。 如果包含的ObjectNamen ,则包含的Java类名称为getMBeanInfo(n).getClassName()
        异常
        RuntimeOperationsException - 包装 java.lang.IllegalArgumentException :传入参数的className为null,传入参数的 ObjectName包含模式,或者没有为MBean指定 ObjectName
        RuntimeMBeanException - 如果MBean的构造函数或其preRegisterpostRegister方法抛出RuntimeException 如果MBean的postRegisterMBeanRegistration接口)方法抛出RuntimeException ,则createMBean方法将抛出RuntimeMBeanException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也将实际注册。 请注意, RuntimeMBeanException也可以抛出preRegister ,在这种情况下,MBean将不会被注册。
        RuntimeErrorException - 如果MBean的postRegisterMBeanRegistration接口)方法抛出Error ,则createMBean方法将抛出RuntimeErrorException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也会实际注册。 请注意, RuntimeErrorException也可以被preRegister抛出,在这种情况下MBean将不会被注册。
        ReflectionException - 包含尝试调用MBean的构造函数时发生的 java.lang.ClassNotFoundExceptionjava.lang.Exception
        InstanceAlreadyExistsException - MBean已受MBean服务器的控制。
        MBeanRegistrationException - MBean的preRegisterMBeanRegistration接口)方法抛出异常。 MBean不会被注册。
        MBeanException - MBean的构造函数抛出异常
        NotCompliantMBeanException - 此类不是符合JMX的MBean
        InstanceNotFoundException - 指定的类加载器未在MBean服务器中注册。
        另请参见:
        MBeanRegistration
      • createMBean

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

        如果此方法成功创建MBean,则如above所述发送通知。

        Specified by:
        createMBean接口 MBeanServerConnection
        参数
        className - 要实例化的MBean的类名。
        name - MBean的对象名称。 可能为空。
        params - 包含要调用的构造函数的参数的数组。
        signature - 包含要调用的构造函数的签名的数组。
        结果
        ObjectInstance ,包含ObjectName和新实例化的MBean的Java类名。 如果包含的ObjectNamen ,则包含的Java类名称为getMBeanInfo(n).getClassName()
        异常
        RuntimeOperationsException - 包装a java.lang.IllegalArgumentException :传入参数的className为null,传入参数的 ObjectName包含模式,或者没有为MBean指定 ObjectName
        RuntimeMBeanException - 如果MBean的构造函数或其preRegisterpostRegister方法抛出RuntimeException 如果MBean的postRegisterMBeanRegistration接口)方法抛出RuntimeException ,则createMBean方法将抛出RuntimeMBeanException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也将实际注册。 请注意, RuntimeMBeanException也可以抛出preRegister ,在这种情况下,MBean将不会被注册。
        RuntimeErrorException - 如果MBean的postRegisterMBeanRegistration接口)方法抛出Error ,则createMBean方法将抛出RuntimeErrorException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也将实际注册。 请注意, RuntimeErrorException也可以抛出preRegister ,在这种情况下MBean将不会被注册。
        ReflectionException - 包装尝试调用MBean的构造函数时发生的 java.lang.ClassNotFoundExceptionjava.lang.Exception
        InstanceAlreadyExistsException - MBean已受MBean服务器的控制。
        MBeanRegistrationException - MBean的preRegisterMBeanRegistration接口)方法抛出异常。 MBean不会被注册。
        MBeanException - MBean的构造函数抛出异常
        NotCompliantMBeanException - 此类不是符合JMX的MBean
        另请参见:
        MBeanRegistration
      • createMBean

        ObjectInstance createMBean​(String className,
                                   ObjectName name,
                                   ObjectName loaderName,
                                   Object[] params,
                                   String[] signature)
                            throws ReflectionException,
                                   InstanceAlreadyExistsException,
                                   MBeanRegistrationException,
                                   MBeanException,
                                   NotCompliantMBeanException,
                                   InstanceNotFoundException

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

        如果此方法成功创建MBean,则如above所述发送通知。

        Specified by:
        createMBean在界面 MBeanServerConnection
        参数
        className - 要实例化的MBean的类名。
        name - MBean的对象名称。 可能为空。
        loaderName - 要使用的类加载器的对象名称。
        params - 包含要调用的构造函数的参数的数组。
        signature - 包含要调用的构造函数的签名的数组。
        结果
        ObjectInstance ,包含ObjectName和新实例化的MBean的Java类名。 如果包含的ObjectNamen ,则包含的Java类名称为getMBeanInfo(n).getClassName()
        异常
        RuntimeOperationsException - 包装a java.lang.IllegalArgumentException :传入参数的className为null,传入参数的 ObjectName包含模式,或者没有为MBean指定 ObjectName
        RuntimeMBeanException - MBean的构造函数或其preRegisterpostRegister方法引发了RuntimeException 如果MBean的postRegisterMBeanRegistration接口)方法抛出RuntimeException ,则createMBean方法将抛出RuntimeMBeanException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也将实际注册。 请注意, RuntimeMBeanException也可以抛出preRegister ,在这种情况下,MBean将不会被注册。
        RuntimeErrorException - 如果MBean的postRegister方法( MBeanRegistration接口)方法抛出Error ,则createMBean方法将抛出RuntimeErrorException ,尽管MBean创建和注册成功。 在这种情况下,即使createMBean方法引发异常,MBean也会实际注册。 请注意, RuntimeErrorException也可以抛出preRegister ,在这种情况下,MBean将不会被注册。
        ReflectionException - 包装尝试调用MBean的构造函数时发生的 java.lang.ClassNotFoundExceptionjava.lang.Exception
        InstanceAlreadyExistsException - MBean已在MBean服务器的控制之下。
        MBeanRegistrationException - MBean的preRegisterMBeanRegistration接口)方法抛出异常。 MBean不会被注册。
        MBeanException - MBean的构造函数抛出异常
        NotCompliantMBeanException - 此类不是符合JMX的MBean
        InstanceNotFoundException - 指定的类加载器未在MBean服务器中注册。
        另请参见:
        MBeanRegistration
      • registerMBean

        ObjectInstance registerMBean​(Object object,
                                     ObjectName name)
                              throws InstanceAlreadyExistsException,
                                     MBeanRegistrationException,
                                     NotCompliantMBeanException

        使用MBean服务器将预先存在的对象注册为MBean。 如果给定的对象名为null,则MBean必须通过实现MBeanRegistration接口并从preRegister方法返回名称来提供自己的名称。

        如果此方法成功注册MBean,则如above所述发送通知。

        参数
        object - 要注册为MBean的MBean。
        name - MBean的对象名称。 可能为空。
        结果
        ObjectInstance ,包含ObjectName和新注册的MBean的Java类名。 如果包含的ObjectNamen ,则包含的Java类名称为getMBeanInfo(n).getClassName()
        异常
        InstanceAlreadyExistsException - MBean已在MBean服务器的控制之下。
        MBeanRegistrationException - MBean的preRegisterMBeanRegistration接口)方法抛出异常。 MBean不会被注册。
        RuntimeMBeanException - 如果MBean的postRegisterMBeanRegistration接口)方法抛出RuntimeException ,则registerMBean方法将抛出RuntimeMBeanException ,尽管MBean注册成功。 在这种情况下,即使registerMBean方法引发异常,MBean也会实际注册。 请注意, RuntimeMBeanException也可以抛出preRegister ,在这种情况下,MBean将不会被注册。
        RuntimeErrorException - 如果MBean的postRegisterMBeanRegistration接口)方法抛出Error ,则registerMBean方法将抛出RuntimeErrorException ,尽管MBean注册成功。 在这种情况下,即使registerMBean方法引发异常,MBean也会实际注册。 请注意, RuntimeErrorException也可以抛出preRegister ,在这种情况下MBean将不会被注册。
        NotCompliantMBeanException - 此对象不是符合JMX的MBean
        RuntimeOperationsException - 包装 java.lang.IllegalArgumentException :参数中传递的对象为null或未指定对象名称。
        另请参见:
        MBeanRegistration
      • unregisterMBean

        void unregisterMBean​(ObjectName name)
                      throws InstanceNotFoundException,
                             MBeanRegistrationException
        从MBean服务器取消注册MBean。 MBean由其对象名标识。 调用该方法后,MBean可能不再被其对象名访问。

        如果此方法成功注销MBean,则如above所述发送通知。

        Specified by:
        unregisterMBean在界面 MBeanServerConnection
        参数
        name - 要取消注册的MBean的对象名称。
        异常
        RuntimeOperationsException - 包装java.lang.IllegalArgumentException :参数中的对象名称为null或尝试取消注册时的MBean是MBeanServerDelegate MBean。
        RuntimeMBeanException - 如果MBean的postDeregisterMBeanRegistration接口)方法抛出RuntimeException ,则unregisterMBean方法将抛出RuntimeMBeanException ,尽管MBean取消注册成功。 在这种情况下,即使unregisterMBean方法引发异常,MBean也将实际上未注册。 请注意, RuntimeMBeanException也可以抛出preDeregister ,在这种情况下,MBean将保持注册状态。
        RuntimeErrorException - 如果MBean的postDeregisterMBeanRegistration接口)方法抛出Error ,则unregisterMBean方法将抛出RuntimeErrorException ,尽管MBean取消注册成功。 在这种情况下,即使unregisterMBean方法引发异常,MBean实际上也会被取消注册。 请注意, RuntimeMBeanException也可以抛出preDeregister ,在这种情况下,MBean将保持注册状态。
        InstanceNotFoundException - 指定的MBean未在MBean服务器中注册。
        MBeanRegistrationException - MBean的preDeregister(( MBeanRegistration接口)方法抛出异常。
        另请参见:
        MBeanRegistration
      • queryMBeans

        Set<ObjectInstance> queryMBeans​(ObjectName name,
                                        QueryExp query)
        获取MBean服务器控制的MBean。 此方法允许获取以下任何内容:所有MBean,由ObjectName上的模式匹配指定的一组MBean和/或Query表达式,即特定MBean。 当对象名称为null或未指定域和键属性时,将选择所有对象(如果指定了查询,则进行过滤)。 它返回所选MBean的ObjectInstance对象(包含ObjectName和Java类名称)的ObjectName
        Specified by:
        queryMBeans在界面 MBeanServerConnection
        参数
        name - 标识要检索的MBean的对象名称模式。 如果指定null或没有指定域和键属性,则将检索所有注册的MBean。
        query - 要应用于选择MBean的查询表达式。 如果为null,则不会应用任何查询表达式来选择MBean。
        结果
        包含所选MBean的ObjectInstance对象的集合。 如果没有MBean满足查询,则返回空列表。
        异常
        RuntimeOperationsException
      • queryNames

        Set<ObjectName> queryNames​(ObjectName name,
                                   QueryExp query)
        获取MBean服务器控制的MBean的名称。 此方法可以获取以下任何内容:所有MBean的名称,由ObjectName上的模式匹配和/或Query表达式指定的一组MBean的名称,特定的MBean名称(相当于测试MBean是否为注册)。 当对象名称为null或未指定域和键属性时,将选择所有对象(如果指定了查询,则进行过滤)。 它返回所选MBean的ObjectNames集。
        Specified by:
        queryNames接口 MBeanServerConnection
        参数
        name - 标识要检索的MBean名称的对象名称模式。 如果指定null或不指定域和键属性,则将检索所有已注册MBean的名称。
        query - 要应用于选择MBean的查询表达式。 如果为null,则不会应用任何查询表达式来选择MBean。
        结果
        包含所选MBean的ObjectName的集合。 如果没有MBean满足查询,则返回空列表。
        异常
        RuntimeOperationsException
      • isRegistered

        boolean isRegistered​(ObjectName name)
        从界面复制的说明: MBeanServerConnection
        检查由其对象名标识的MBean是否已在MBean服务器中注册。
        Specified by:
        isRegistered在界面 MBeanServerConnection
        参数
        name - 要检查的MBean的对象名称。
        结果
        如果MBean已在MBean服务器中注册,则为True,否则为false。
        异常
        RuntimeOperationsException - 包装a java.lang.IllegalArgumentException :参数中的对象名称为null。
      • getMBeanCount

        Integer getMBeanCount()
        返回MBean服务器中注册的MBean数。
        Specified by:
        getMBeanCount在界面 MBeanServerConnection
        结果
        已注册MBean的数量,包含在Integer中。 如果调用者的权限受到限制,则此数字可能大于调用者可以访问的MBean数。
      • getAttributes

        AttributeList getAttributes​(ObjectName name,
                                    String[] attributes)
                             throws InstanceNotFoundException,
                                    ReflectionException
        从界面复制的说明: MBeanServerConnection

        检索指定MBean的多个属性的值。 MBean由其对象名标识。

        如果由于某种原因无法检索到一个或多个属性,则将从返回的AttributeList省略它们。 调用者应检查列表是否与attributes数组的大小相同。 要发现阻止检索给定属性的问题,请为该属性调用getAttribute

        下面是调用此方法并检查它是否成功检索所有请求的属性的示例:

          String[] attrNames = ...;
         AttributeList list = mbeanServerConnection.getAttributes(objectName, attrNames);
         if (list.size() == attrNames.length)
             System.out.println("All attributes were retrieved successfully");
         else {
             List<String> missing = new ArrayList<String>(
        
                       Arrays.asList(attrNames));
             for (Attribute a : list.asList())
                 missing.remove(a.getName());
             System.out.println("Did not retrieve: " + missing);
         } 
        Specified by:
        getAttributes接口 MBeanServerConnection
        参数
        name - 从中检索属性的MBean的对象名称。
        attributes - 要检索的属性列表。
        结果
        检索到的属性列表。
        异常
        RuntimeOperationsException - 包装 java.lang.IllegalArgumentException :参数中的对象名称为null或参数中的属性为null。
        InstanceNotFoundException - 指定的MBean未在MBean服务器中注册。
        ReflectionException - 尝试调用Dynamic MBean的getAttributes方法时发生异常。
        另请参见:
        MBeanServerConnection.setAttributes(javax.management.ObjectName, javax.management.AttributeList)
      • setAttributes

        AttributeList setAttributes​(ObjectName name,
                                    AttributeList attributes)
                             throws InstanceNotFoundException,
                                    ReflectionException
        从界面复制的说明: MBeanServerConnection

        设置命名MBean的多个属性的值。 MBean由其对象名标识。

        如果由于某种原因无法设置一个或多个属性,则将从返回的AttributeList省略它们。 调用者应检查输入AttributeList的大小是否与输出的大小相同。 要发现阻止检索给定属性的问题,通常可以为该属性调用setAttribute ,但这不能保证起作用。 (例如,两个属性的值可能已被拒绝,因为它们彼此不一致。可能允许单独设置其中一个属性。)

        下面是调用此方法并检查它是否成功设置所有请求的属性的示例:

          AttributeList inputAttrs = ...;
         AttributeList outputAttrs = mbeanServerConnection.setAttributes(
        
                       objectName, inputAttrs);
         if (inputAttrs.size() == outputAttrs.size())
             System.out.println("All attributes were set successfully");
         else {
             List<String> missing = new ArrayList<String>();
             for (Attribute a : inputAttrs.asList())
                 missing.add(a.getName());
             for (Attribute a : outputAttrs.asList())
                 missing.remove(a.getName());
             System.out.println("Did not set: " + missing);
         } 
        Specified by:
        setAttributes在界面 MBeanServerConnection
        参数
        name - 要在其中设置属性的MBean的对象名称。
        attributes - 属性列表:要设置的属性的标识以及要设置的值。
        结果
        已设置的属性列表及其新值。
        异常
        RuntimeOperationsException - 包装a java.lang.IllegalArgumentException :参数中的对象名称为null或参数中的属性为null。
        InstanceNotFoundException - 指定的MBean未在MBean服务器中注册。
        ReflectionException - 尝试调用Dynamic MBean的getAttributes方法时发生异常。
        另请参见:
        MBeanServerConnection.getAttributes(javax.management.ObjectName, java.lang.String[])
      • 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 - 包装a 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(since="1.5")
        default ObjectInputStream deserialize​(String className,
                                              ObjectName loaderName,
                                              byte[] data)
                                       throws InstanceNotFoundException,
                                              OperationsException,
                                              ReflectionException
        Deprecated.
        Use getClassLoader to obtain the class loader for deserialization.

        在给定MBean类加载器的上下文中反序列化字节数组。 类加载器是加载名为“className”的类的加载器。 指定了用于加载指定类的类加载器的名称。 如果为null,则将使用MBean Server的类加载器。

        实现要求:
        默认情况下,此方法抛出UnsupportedOperationException
        参数
        className - 应将类加载器用于反序列化的类的名称。
        data - 要 data的字节数组。
        loaderName - 用于加载指定类的类加载器的名称。 如果为null,则将使用MBean Server的类加载器。
        结果
        反序列化的对象流。
        异常
        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。