-
- 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
和ObjectName
ObjectName
(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 弃用的方法 变量和类型 方法 描述 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。default ObjectInputStream
deserialize(String className, byte[] data)
已过时。使用getClassLoaderRepository()
获取类装入器存储库并使用它进行反序列化。default ObjectInputStream
deserialize(String className, ObjectName loaderName, byte[] data)
已过时。使用getClassLoader
获取用于反序列化的类加载器。default ObjectInputStream
deserialize(ObjectName name, byte[] data)
已过时。使用getClassLoaderFor
获取用于反序列化的相应类加载器。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。Integer
getMBeanCount()
返回MBean服务器中注册的MBean数。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
指定的类Loader实例化对象。Object
instantiate(String className, ObjectName loaderName, Object[] params, String[] signature)
实例化一个对象。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
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
在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是MBeanServerDelegate
MBean。 -
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.UsegetClassLoaderFor
to 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.UsegetClassLoader
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是返回值,则:
- 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。
-
-