-
- All Superinterfaces:
-
MBeanServerConnection
- All Known Subinterfaces:
-
MBeanServerForwarder
public interface MBeanServer extends MBeanServerConnection
这是代理端MBean操作的接口。 它包含创建,注册和删除MBean所需的方法以及已注册MBean的访问方法。 这是JMX基础架构的核心组件。
用户代码通常不实现此接口。 相反,使用
MBeanServerFactory类中的一个方法获取实现此接口的对象。添加到MBean服务器的每个MBean都变得可管理:其属性和操作可通过连接到该MBean服务器的连接器/适配器远程访问。 Java对象无法在MBean服务器中注册,除非它是符合JMX的MBean。
在MBean服务器中注册或取消注册MBean时,将发出
MBeanServerNotification通知。 要将对象注册为MBeanServerNotifications的侦听器,应调用MBean服务器方法addNotificationListener和ObjectNameObjectName(MBeanServerDelegate) 。ObjectName是:
JMImplementation:type=MBeanServerDelegate。从
MBeanServerFactory类的createMBeanServer或newMBeanServer方法获得的对象对其方法应用安全检查,如下所述。首先,如果没有安全管理器(
System.getSecurityManager()为null),则此接口的实现可以不进行任何检查。假设有一个安全管理器,或者实现选择进行检查,则检查如下所述。 在下文中,除非另有说明,否则
className是MBeanInfo.getClassName()为目标MBean返回的字符串。如果安全检查失败,则抛出该方法
SecurityException。对于可以抛出
InstanceNotFoundException的方法,无论权限如何,都会针对不存在的MBean抛出此异常。 这是因为不存在的MBean没有className。对于
invoke方法,调用方的权限必须表示MBeanPermission(className, operationName, name, "invoke")。对于
getAttribute方法,调用者的权限必须表示MBeanPermission(className, attribute, name, "getAttribute")。对于
getAttributes方法,调用者的权限必须表示MBeanPermission(className, null, name, "getAttribute")。 此外,对于AttributeList中的每个属性a ,如果调用方的权限不表示MBeanPermission(className, a, name, "getAttribute"),则MBean服务器的行为就像该属性不在提供的列表中一样。对于
setAttribute方法,调用者的权限必须表示MBeanPermission(className, attrName, name, "setAttribute"),其中attrName是attribute.getName()。对于
setAttributes方法,调用者的权限必须表示MBeanPermission(className, null, name, "setAttribute")。 此外,对于AttributeList中的每个属性a ,如果调用者的权限不暗示MBeanPermission(className, a, name, "setAttribute"),则MBean服务器的行为就像该属性不在提供的列表中一样。对于
addNotificationListener方法,调用者的权限必须表示MBeanPermission(className, null, name, "addNotificationListener")。对于
removeNotificationListener方法,调用者的权限必须隐含MBeanPermission(className, null, name, "removeNotificationListener")。对于
getMBeanInfo方法,调用者的权限必须隐含MBeanPermission(className, null, name, "getMBeanInfo")。对于
getObjectInstance方法,调用者的权限必须隐含MBeanPermission(className, null, name, "getObjectInstance")。对于
isInstanceOf方法,调用者的权限必须隐含MBeanPermission(className, null, name, "isInstanceOf")。对于
queryMBeans方法,调用者的权限必须隐含MBeanPermission(null, null, null, "queryMBeans")。 此外,对于匹配name每个MBean n ,如果调用者的权限不暗示MBeanPermission(className, null, n, "queryMBeans"),则MBean服务器将表现为该MBean不存在。某些查询元素在MBean服务器上执行操作。 如果调用者没有给定MBean所需的权限,则该MBean将不包含在查询结果中。 受此影响的标准查询元素是
Query.attr(String),Query.attr(String,String)和Query.classattr()。对于
queryNames的方法,该检查是相同queryMBeans除了"queryNames"被用来代替"queryMBeans"在MBeanPermission对象。 请注意,"queryMBeans"权限意味着相应的"queryNames"权限。对于
getDomains方法,调用者的权限必须隐含MBeanPermission(null, null, null, "getDomains")。 此外,对于返回数组中的每个域d ,如果调用者的权限不暗示MBeanPermission(null, null, new ObjectName("d:x=x"), "getDomains"),则从阵列中删除域。 这里,x=x是任何key = value对,需要满足ObjectName的构造函数,但不相关。对于
getClassLoader方法,调用方的权限必须表示MBeanPermission(className, null, loaderName, "getClassLoader")。对于
getClassLoaderFor方法,调用者的权限必须表示MBeanPermission(className, null, mbeanName, "getClassLoaderFor")。对于
getClassLoaderRepository方法,调用者的权限必须隐含MBeanPermission(null, null, null, "getClassLoaderRepository")。对于已弃用的
deserialize方法,所需权限与替换它们的方法相同。对于
instantiate方法,调用者的权限必须表示MBeanPermission(className, null, null, "instantiate"),其中className是要实例化的类的名称。对于
registerMBean方法,调用方的权限必须表示MBeanPermission(className, null, name, "registerMBean")。如果
MBeanPermission检查成功,则通过检查MBean的ProtectionDomain隐含MBeanTrustPermission("register")来验证MBean的类。最后,如果
name参数为null,则使用ObjectName返回的ObjectName进行另一次MBeanPermission检查。对于
createMBean方法,调用方的权限必须表示等效instantiate后跟registerMBean所需的权限。对于
unregisterMBean方法,调用者的权限必须隐含MBeanPermission(className, null, name, "unregisterMBean")。
- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 实例方法 抽象方法 Default Methods 弃用的方法 变量和类型 方法 描述 voidaddNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback)向已注册的MBean添加侦听器。voidaddNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback)向已注册的MBean添加侦听器。ObjectInstancecreateMBean(String className, ObjectName name)在MBean服务器中实例化并注册MBean。ObjectInstancecreateMBean(String className, ObjectName name, Object[] params, String[] signature)在MBean服务器中实例化并注册MBean。ObjectInstancecreateMBean(String className, ObjectName name, ObjectName loaderName)在MBean服务器中实例化并注册MBean。ObjectInstancecreateMBean(String className, ObjectName name, ObjectName loaderName, Object[] params, String[] signature)在MBean服务器中实例化并注册MBean。default ObjectInputStreamdeserialize(String className, byte[] data)已过时。使用getClassLoaderRepository()获取类装入器存储库并使用它进行反序列化。default ObjectInputStreamdeserialize(String className, ObjectName loaderName, byte[] data)已过时。使用getClassLoader获取用于反序列化的类加载器。default ObjectInputStreamdeserialize(ObjectName name, byte[] data)已过时。使用getClassLoaderFor获取用于反序列化的相应类加载器。ObjectgetAttribute(ObjectName name, String attribute)获取指定MBean的特定属性的值。AttributeListgetAttributes(ObjectName name, String[] attributes)检索指定MBean的多个属性的值。ClassLoadergetClassLoader(ObjectName loaderName)返回指定的ClassLoader。ClassLoadergetClassLoaderFor(ObjectName mbeanName)返回用于加载指定MBean的类的ClassLoader。ClassLoaderRepositorygetClassLoaderRepository()返回此MBeanServer的ClassLoaderRepository。IntegergetMBeanCount()返回MBean服务器中注册的MBean数。Objectinstantiate(String className)使用MBean服务器Class Loader Repository中注册的所有类加载器的列表实例化对象。Objectinstantiate(String className, Object[] params, String[] signature)使用在MBean服务器Class Loader Repository中注册的所有类加载器的列表来实例化对象。Objectinstantiate(String className, ObjectName loaderName)使用由其ObjectName指定的类Loader实例化对象。Objectinstantiate(String className, ObjectName loaderName, Object[] params, String[] signature)实例化一个对象。booleanisRegistered(ObjectName name)检查由其对象名标识的MBean是否已在MBean服务器中注册。Set<ObjectInstance>queryMBeans(ObjectName name, QueryExp query)获取MBean服务器控制的MBean。Set<ObjectName>queryNames(ObjectName name, QueryExp query)获取MBean服务器控制的MBean的名称。ObjectInstanceregisterMBean(Object object, ObjectName name)使用MBean服务器将预先存在的对象注册为MBean。voidsetAttribute(ObjectName name, Attribute attribute)设置指定MBean的特定属性的值。AttributeListsetAttributes(ObjectName name, AttributeList attributes)设置命名MBean的多个属性的值。voidunregisterMBean(ObjectName name)从MBean服务器取消注册MBean。
-
-
-
方法详细信息
-
createMBean
ObjectInstance createMBean(String className, ObjectName name) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException
在MBean服务器中实例化并注册MBean。 MBean服务器将使用其
Default Loader Repository来加载MBean的类。 对象名称与MBean关联。 如果给定的对象名为null,则MBean必须通过实现MBeanRegistration接口并从preRegister方法返回名称来提供自己的名称。此方法相当于
createMBean(className, name, (Object[]) null, (String[]) null)。如果此方法成功创建MBean,则如above所述发送通知。
- Specified by:
-
createMBean,界面MBeanServerConnection - 参数
-
className- 要实例化的MBean的类名。 -
name- MBean的对象名称。 可能为空。 - 结果
-
ObjectInstance,包含ObjectName和新实例化的MBean的Java类名。 如果包含的ObjectName是n,则包含的Java类名称为。getMBeanInfo(n).getClassName() - 异常
-
RuntimeOperationsException- 包装ajava.lang.IllegalArgumentException:参数中传递的className为null,传入参数的ObjectName包含模式,或者没有为MBean指定ObjectName。 -
RuntimeMBeanException- 如果MBean的构造函数或其preRegister或postRegister方法抛出RuntimeException。 如果MBean的postRegister(MBeanRegistration接口)方法抛出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.ClassNotFoundException或java.lang.Exception。 -
InstanceAlreadyExistsException- MBean已受MBean服务器的控制。 -
MBeanRegistrationException- MBean的preRegister(MBeanRegistration接口)方法抛出异常。 MBean不会被注册。 -
MBeanException- MBean的构造函数抛出异常 -
NotCompliantMBeanException- 此类不是符合JMX的MBean - 另请参见:
-
MBeanRegistration
-
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类名。 如果包含的ObjectName是n,则包含的Java类名称为。getMBeanInfo(n).getClassName() - 异常
-
RuntimeOperationsException- 包装java.lang.IllegalArgumentException:传入参数的className为null,传入参数的ObjectName包含模式,或者没有为MBean指定ObjectName。 -
RuntimeMBeanException- 如果MBean的构造函数或其preRegister或postRegister方法抛出RuntimeException。 如果MBean的postRegister(MBeanRegistration接口)方法抛出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.ClassNotFoundException或java.lang.Exception。 -
InstanceAlreadyExistsException- MBean已受MBean服务器的控制。 -
MBeanRegistrationException- MBean的preRegister(MBeanRegistration接口)方法抛出异常。 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类名。 如果包含的ObjectName是n,则包含的Java类名称为。getMBeanInfo(n).getClassName() - 异常
-
RuntimeOperationsException- 包装ajava.lang.IllegalArgumentException:传入参数的className为null,传入参数的ObjectName包含模式,或者没有为MBean指定ObjectName。 -
RuntimeMBeanException- 如果MBean的构造函数或其preRegister或postRegister方法抛出RuntimeException。 如果MBean的postRegister(MBeanRegistration接口)方法抛出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.ClassNotFoundException或java.lang.Exception。 -
InstanceAlreadyExistsException- MBean已受MBean服务器的控制。 -
MBeanRegistrationException- MBean的preRegister(MBeanRegistration接口)方法抛出异常。 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类名。 如果包含的ObjectName是n,则包含的Java类名称为。getMBeanInfo(n).getClassName() - 异常
-
RuntimeOperationsException- 包装ajava.lang.IllegalArgumentException:传入参数的className为null,传入参数的ObjectName包含模式,或者没有为MBean指定ObjectName。 -
RuntimeMBeanException- MBean的构造函数或其preRegister或postRegister方法引发了RuntimeException。 如果MBean的postRegister(MBeanRegistration接口)方法抛出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.ClassNotFoundException或java.lang.Exception。 -
InstanceAlreadyExistsException- MBean已在MBean服务器的控制之下。 -
MBeanRegistrationException- MBean的preRegister(MBeanRegistration接口)方法抛出异常。 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类名。 如果包含的ObjectName是n,则包含的Java类名称为。getMBeanInfo(n).getClassName() - 异常
-
InstanceAlreadyExistsException- MBean已在MBean服务器的控制之下。 -
MBeanRegistrationException- MBean的preRegister(MBeanRegistration接口)方法抛出异常。 MBean不会被注册。 -
RuntimeMBeanException- 如果MBean的postRegister(MBeanRegistration接口)方法抛出RuntimeException,则registerMBean方法将抛出RuntimeMBeanException,尽管MBean注册成功。 在这种情况下,即使registerMBean方法引发异常,MBean也会实际注册。 请注意,RuntimeMBeanException也可以抛出preRegister,在这种情况下,MBean将不会被注册。 -
RuntimeErrorException- 如果MBean的postRegister(MBeanRegistration接口)方法抛出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
- Specified by:
-
unregisterMBean在界面MBeanServerConnection - 参数
-
name- 要取消注册的MBean的对象名称。 - 异常
-
RuntimeOperationsException- 包装java.lang.IllegalArgumentException:参数中的对象名称为null或尝试取消注册时的MBean是MBeanServerDelegateMBean。 -
RuntimeMBeanException- 如果MBean的postDeregister(MBeanRegistration接口)方法抛出RuntimeException,则unregisterMBean方法将抛出RuntimeMBeanException,尽管MBean取消注册成功。 在这种情况下,即使unregisterMBean方法引发异常,MBean也将实际上未注册。 请注意,RuntimeMBeanException也可以抛出preDeregister,在这种情况下,MBean将保持注册状态。 -
RuntimeErrorException- 如果MBean的postDeregister(MBeanRegistration接口)方法抛出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- 包装ajava.lang.IllegalArgumentException:参数中的对象名称为null。
-
getMBeanCount
Integer getMBeanCount()
返回MBean服务器中注册的MBean数。- Specified by:
-
getMBeanCount在界面MBeanServerConnection - 结果
- 已注册MBean的数量,包含在Integer中。 如果调用者的权限受到限制,则此数字可能大于调用者可以访问的MBean数。
-
getAttribute
Object getAttribute(ObjectName name, String attribute) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException
从界面复制的说明:MBeanServerConnection获取指定MBean的特定属性的值。 MBean由其对象名标识。- Specified by:
-
getAttribute接口MBeanServerConnection - 参数
-
name- 要从中检索属性的MBean的对象名称。 -
attribute- 指定要检索的属性名称的String。 - 结果
- 检索到的属性的值。
- 异常
-
RuntimeOperationsException- 包装java.lang.IllegalArgumentException:参数中的对象名称为null或参数中的属性为null。 -
MBeanException- 包装MBean的getter抛出的异常。 -
AttributeNotFoundException- MBean中无法访问指定的属性。 -
InstanceNotFoundException- 指定的MBean未在MBean服务器中注册。 -
ReflectionException- 尝试调用setter时抛出java.lang.Exception。 - 另请参见:
-
MBeanServerConnection.setAttribute(javax.management.ObjectName, javax.management.Attribute)
-
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 = newArrayList<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)
-
setAttribute
void setAttribute(ObjectName name, Attribute attribute) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
从界面复制的说明:MBeanServerConnection设置指定MBean的特定属性的值。 MBean由其对象名标识。- Specified by:
-
setAttribute在界面MBeanServerConnection - 参数
-
name- 要在其中设置属性的MBean的名称。 -
attribute- 要设置的属性的标识以及要设置的值。 - 异常
-
RuntimeOperationsException- 包装ajava.lang.IllegalArgumentException:参数中的对象名称为null或参数中的属性为null。 -
InstanceNotFoundException- 指定的MBean未在MBean服务器中注册。 -
AttributeNotFoundException- MBean中无法访问指定的属性。 -
InvalidAttributeValueException- 为该属性指定的值无效。 -
MBeanException- 包装MBean的setter抛出的异常。 -
ReflectionException- 尝试调用setter时抛出java.lang.Exception。 - 另请参见:
-
MBeanServerConnection.getAttribute(javax.management.ObjectName, java.lang.String)
-
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 = newArrayList<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- 包装ajava.lang.IllegalArgumentException:参数中的对象名称为null或参数中的属性为null。 -
InstanceNotFoundException- 指定的MBean未在MBean服务器中注册。 -
ReflectionException- 尝试调用Dynamic MBean的getAttributes方法时发生异常。 - 另请参见:
-
MBeanServerConnection.getAttributes(javax.management.ObjectName, java.lang.String[])
-
addNotificationListener
void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException
向已注册的MBean添加侦听器。 MBean发出的通知将转发给监听器。
如果通知源是对MBean对象的引用,则MBean服务器将使用该MBean的ObjectName替换它。 否则源不变。- Specified by:
-
addNotificationListener在界面MBeanServerConnection - 参数
-
name- 应添加侦听器的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
向已注册的MBean添加侦听器。
MBean发出的通知将由MBeanServer转发给侦听器。 如果通知源是对MBean对象的引用,则MBean服务器将使用该MBean的ObjectName替换它。 否则源不变。
接收通知的侦听器对象是在调用此方法时使用给定名称注册的对象。 即使它随后未注册,它仍将继续收到通知。
- Specified by:
-
addNotificationListener在界面MBeanServerConnection - 参数
-
name- 应添加侦听器的MBean的名称。 -
listener- 将处理已注册MBean发出的通知的侦听器的对象名。 -
filter- 过滤器对象。 如果filter为null,则在处理通知之前不会执行任何过滤。 -
handback- 发出通知时要发送给侦听器的上下文。 - 异常
-
RuntimeOperationsException- 环绕IllegalArgumentException。 由listener命名的MBean存在但未实现NotificationListener接口。 -
InstanceNotFoundException- 通知侦听器或通知广播器的MBean名称与任何已注册的MBean都不匹配。 - 另请参见:
-
MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName),MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
-
instantiate
Object instantiate(String className) throws ReflectionException, MBeanException
使用MBean服务器
Class Loader Repository中注册的所有类加载器的列表实例化对象。 对象的类应该有一个公共构造函数。 此方法返回对新创建的对象的引用。 新创建的对象未在MBean服务器中注册。此方法相当于
instantiate(className, (Object[]) null, (String[]) null)。- 参数
-
className- 要实例化的对象的类名。 - 结果
- 新实例化的对象。
- 异常
-
ReflectionException- 包装尝试调用对象构造函数时发生的java.lang.ClassNotFoundException或java.lang.Exception。 -
MBeanException- 对象的构造函数抛出异常 -
RuntimeOperationsException- 包装ajava.lang.IllegalArgumentException:参数中传递的className为null。
-
instantiate
Object instantiate(String className, ObjectName loaderName) throws ReflectionException, MBeanException, InstanceNotFoundException
使用由其
ObjectName指定的类Loader实例化对象。 如果加载程序名称为null,则将使用加载MBean Server的ClassLoader。 对象的类应该有一个公共构造函数。 此方法返回对新创建的对象的引用。 新创建的对象未在MBean服务器中注册。此方法相当于
instantiate(className, loaderName, (Object[]) null, (String[]) null)。- 参数
-
className- 要实例化的MBean的类名。 -
loaderName- 要使用的类加载器的对象名称。 - 结果
- 新实例化的对象。
- 异常
-
ReflectionException- 包装尝试调用对象构造函数时发生的java.lang.ClassNotFoundException或java.lang.Exception。 -
MBeanException- 对象的构造函数抛出异常。 -
InstanceNotFoundException- 指定的类加载器未在MBeanServer中注册。 -
RuntimeOperationsException- 包装ajava.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.ClassNotFoundException或java.lang.Exception。 -
MBeanException- 对象的构造函数抛出异常 -
RuntimeOperationsException- 包装ajava.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.ClassNotFoundException或java.lang.Exception。 -
MBeanException- 对象的构造函数抛出异常 -
InstanceNotFoundException- 指定的类加载器未在MBean服务器中注册。 -
RuntimeOperationsException- 包装java.lang.IllegalArgumentException:参数中传递的className为null。
-
deserialize
@Deprecated(since="1.5") default ObjectInputStream deserialize(ObjectName name, byte[] data) throws InstanceNotFoundException, OperationsException
Deprecated.UsegetClassLoaderForto obtain the appropriate class loader for deserialization.在MBean的类加载器的上下文中反序列化字节数组。
- 实现要求:
-
默认情况下,此方法抛出
UnsupportedOperationException。 - 参数
-
name- 应将类加载器用于反序列化的MBean的名称。 -
data- 要data的字节数组。 - 结果
- 反序列化的对象流。
- 异常
-
InstanceNotFoundException- 找不到指定的MBean。 -
OperationsException- 任何常见的输入/输出相关异常。
-
deserialize
@Deprecated(since="1.5") default ObjectInputStream deserialize(String className, byte[] data) throws OperationsException, ReflectionException
Deprecated.UsegetClassLoaderRepository()to obtain the class loader repository and use it to deserialize.在给定MBean类加载器的上下文中反序列化字节数组。 通过
Class Loader Repository加载类className找到类加载器。 结果类的类加载器是要使用的类加载器。- 实现要求:
-
默认情况下,此方法抛出
UnsupportedOperationException。 - 参数
-
className- 应将类加载器用于反序列化的类的名称。 -
data- 要data的字节数组。 - 结果
- 反序列化的对象流。
- 异常
-
OperationsException- 任何常见的输入/输出相关异常。 -
ReflectionException- 类装入器存储库无法装入指定的类
-
deserialize
@Deprecated(since="1.5") default ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data) throws InstanceNotFoundException, OperationsException, ReflectionException
Deprecated.UsegetClassLoaderto 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是返回值,则:
- r与l相同; 要么
- 对于任何字符串s , r
.loadClass(s)的结果与l.loadClass(s)相同。
- 异常
-
InstanceNotFoundException- 如果找不到指定的MBean。
-
getClassLoader
ClassLoader getClassLoader(ObjectName loaderName) throws InstanceNotFoundException
返回指定的
ClassLoader。- 参数
-
loaderName- ClassLoader的ObjectName。 可以为null,在这种情况下返回MBean服务器自己的ClassLoader。 - 结果
-
名为ClassLoader。
如果l是具有该名称的实际ClassLoader,并且r是返回值,则:
- r与l相同; 要么
- 对于任何字符串s , r
.loadClass(s)的结果与l.loadClass(s)相同。
- 异常
-
InstanceNotFoundException- 如果找不到指定的ClassLoader。
-
getClassLoaderRepository
ClassLoaderRepository getClassLoaderRepository()
返回此MBeanServer的ClassLoaderRepository。
- 结果
- 此MBeanServer的ClassLoaderRepository。
-
-