-
- All Superinterfaces:
-
MBeanServerConnection
- All Known Subinterfaces:
-
MBeanServerForwarder
public interface MBeanServer extends MBeanServerConnection
这是代理方面的MBean操作界面。 它包含创建,注册和删除MBean所需的方法以及注册的MBean的访问方法。 这是JMX基础架构的核心组件。
用户代码通常不会实现此接口。 而是使用
MBeanServerFactory
类中的一种方法获取实现此接口的对象。添加到MBean服务器中的每个MBean变得可管理:通过连接到该MBean服务器的连接器/适配器,其属性和操作可以远程访问。 除非是符合JMX的MBean,否则无法在MBean服务器中注册Java对象。
当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")
。 此外,对于每个MBean n表示匹配name
,如果调用者的权限并不意味着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 =值对,需要满足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")
来验证。最后,如果
name
参数为null,则使用ObjectName
返回的ObjectName进行另一个MBeanPermission
检查。对于
createMBean
方法,呼叫者的权限必须意味着等效的instantiate
所需的权限,后面是registerMBean
。对于
unregisterMBean
方法,呼叫者的权限必须意味着MBeanPermission(className, null, name, "unregisterMBean")
。
- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 接口方法 抽象方法 Default Methods 弃用的方法 Modifier and Type 方法 描述 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。String
getDefaultDomain()
返回用于命名MBean的默认域。String[]
getDomains()
返回任何MBean当前注册的域列表。Integer
getMBeanCount()
返回在MBean服务器中注册的MBeans数。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
指定的类Loader来实例化对象。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
在MBean服务器中实例化并注册一个MBean。 MBean服务器将使用其
Default Loader Repository
加载MBean的类。 对象名称与MBean相关联。 如果给定的对象名称为空,则MBean必须通过实现MBeanRegistration
接口并从preRegister
方法返回名称来提供自己的名称。此方法相当于
createMBean(className, name, (Object[]) null, (String[]) null)
。如果此方法成功创建一个MBean,将按照above的说明发送通知。
- Specified by:
-
createMBean
在接口MBeanServerConnection
- 参数
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。 可能为null。 - 结果
-
一个
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
- 包装一个java.lang.ClassNotFoundException
或java.lang.Exception
,当尝试调用MBean的构造函数时发生。 -
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的对象名称。 可能为null。 -
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
- 包装一个java.lang.ClassNotFoundException
或java.lang.Exception
,当尝试调用MBean的构造函数时。 -
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相关联。 如果给定的对象名称为空,则MBean必须通过实现MBeanRegistration
接口并从preRegister
方法返回名称来提供自己的名称。如果此方法成功创建一个MBean,则会按照above所述发送通知。
- Specified by:
-
createMBean
在接口MBeanServerConnection
- 参数
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。 可能为null。 -
params
- 包含要调用的构造函数的参数的数组。 -
signature
- 包含要调用的构造函数的签名的数组。 - 结果
-
一个
ObjectInstance
,包含ObjectName
和新实例化的MBean的Java类名称。 如果包含的ObjectName
是n
,则包含的Java类名称为
。getMBeanInfo(n)
.getClassName() - 异常
-
RuntimeOperationsException
- 包裹一个java.lang.IllegalArgumentException
:传入参数的className为null,传入参数的ObjectName
包含一个模式,或者没有为MBean指定ObjectName
。 -
RuntimeMBeanException
- 如果MBean的构造函数或其preRegister
或postRegister
方法抛出一个RuntimeException
。 如果postRegister
(MBeanRegistration
的MBean的接口)方法抛出RuntimeException
,所述createMBean
方法将抛出RuntimeMBeanException
,虽然该MBean创建和注册成功了。 在这种情况下,即使createMBean
方法抛出异常,MBean也将被实际注册。 请注意,RuntimeMBeanException
也可以抛出preRegister
,在这种情况下,MBean将不会被注册。 -
RuntimeErrorException
- 如果MBean的postRegister
(MBeanRegistration
接口)方法抛出一个Error
,则createMBean
方法将抛出一个RuntimeErrorException
,尽管MBean的创建和注册成功。 在这种情况下,即使createMBean
方法抛出异常,MBean也将实际注册。 请注意,RuntimeErrorException
也可以抛出preRegister
,在这种情况下MBean将不会被注册。 -
ReflectionException
- 包装一个java.lang.ClassNotFoundException
或java.lang.Exception
,当尝试调用MBean的构造函数时。 -
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对象名称为空,则MBean必须通过实现
MBeanRegistration
接口并从preRegister
方法返回名称来提供自己的名称。如果此方法成功创建一个MBean,将按照above的说明发送通知。
- Specified by:
-
createMBean
在接口MBeanServerConnection
- 参数
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。 可能为null。 -
loaderName
- 要使用的类加载器的对象名称。 -
params
- 包含要调用的构造函数的参数的数组。 -
signature
- 包含要调用的构造函数的签名的数组。 - 结果
-
一个
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
-如果postRegister
方法(MBeanRegistration
的MBean的接口)方法抛出Error
,所述createMBean
方法将抛出RuntimeErrorException
,虽然该MBean创建和注册成功了。 在这种情况下,即使createMBean
方法抛出异常,MBean也会实际注册。 注意,RuntimeErrorException
也可以抛出preRegister
,在这种情况下,MBean将不会被注册。 -
ReflectionException
- 包装一个java.lang.ClassNotFoundException
或java.lang.Exception
,当尝试调用MBean的构造函数时。 -
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。 如果给定的对象名称为空,则MBean必须通过实现
MBeanRegistration
接口并从preRegister
方法返回名称来提供自己的名称。如果此方法成功注册了MBean,则会按照above的说明发送通知。
- 参数
-
object
- 要注册为MBean的MBean。 -
name
- MBean的对象名称。 可能为null。 - 结果
-
一个
ObjectInstance
,包含ObjectName
和新注册的MBean的Java类名。 如果包含的ObjectName
是n
,则包含的Java类名称为
。getMBeanInfo(n)
.getClassName() - 异常
-
InstanceAlreadyExistsException
- MBean已经在MBean服务器的控制之下了。 -
MBeanRegistrationException
- MBean的preRegister
(MBeanRegistration
接口)方法抛出异常。 MBean将不会被注册。 -
RuntimeMBeanException
-如果postRegister
(MBeanRegistration
的MBean的接口)方法抛出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
-如果postDeregister
(MBeanRegistration
的MBean的接口)方法抛出一个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
-
getObjectInstance
ObjectInstance getObjectInstance(ObjectName name) throws InstanceNotFoundException
说明从界面复制:MBeanServerConnection
获取为MBean服务器注册的给定MBean的ObjectInstance
。- Specified by:
-
getObjectInstance
在接口MBeanServerConnection
- 参数
-
name
- MBean的对象名称。 - 结果
-
与名称指定的MBean相关联的
ObjectInstance
。 包含的ObjectName
是name
,包含的类名是
。getMBeanInfo(name)
.getClassName() - 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。
-
queryMBeans
Set<ObjectInstance> queryMBeans(ObjectName name, QueryExp query)
获取由MBean服务器控制的MBean。 此方法允许获取以下任何内容:所有MBean,由ObjectName
和/或Query表达式上的模式匹配指定的一组MBean,特定的MBean。 当对象名称为空或没有指定域和键属性时,将选择所有对象(如果指定了查询,则过滤它们)。 它返回所选MBean的一组ObjectInstance
对象(包含ObjectName
和Java类名)。- 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是否为注册)。 当对象名称为空或没有指定域和键属性时,将选择所有对象(如果指定了查询,则将其过滤)。 它返回所选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
- 包裹一个java.lang.IllegalArgumentException
:参数中的对象名称为null。
-
getMBeanCount
Integer getMBeanCount()
返回在MBean服务器中注册的MBeans数。- Specified by:
-
getMBeanCount
在接口MBeanServerConnection
- 结果
- 注册的MBeans的数量,以整数形式包装。 如果呼叫者的权限受到限制,则该号码可能大于主叫方可以访问的MBean数。
-
getAttribute
Object getAttribute(ObjectName name, String attribute) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException
描述从接口MBeanServerConnection
复制获取命名MBean的特定属性的值。 MBean由其对象名称标识。- Specified by:
-
getAttribute
在接口MBeanServerConnection
- 参数
-
name
- 要从中检索属性的MBean的对象名称。 -
attribute
- 指定要检索的属性名称的字符串。 - 结果
- 检索属性的值。
- 异常
-
RuntimeOperationsException
- 包裹一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为空。 -
MBeanException
- 包装MBean的getter抛出的异常。 -
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由其对象名称标识。
如果由于某种原因无法检索到一个或多个属性,则将从返回的
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或参数中的属性为空。 -
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用动态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
- 包裹一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
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由其对象名称标识。
如果由于某种原因无法设置一个或多个属性,则它们将从返回的
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
- 包裹一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用动态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上的操作。
由于需要一个
signature
来区分可能的重载操作,所以在可能的情况下通过MBean proxy调用操作要简单得多。 例如,假设你有一个这样的标准MBean接口:public interface FooMBean { public int countMatches(String[] patterns, boolean ignoreCase); }
可以调用
countMatches
操作如下:String[] myPatterns = ...; int count = (Integer) mbeanServerConnection.invoke( objectName, "countMatches", new Object[] {myPatterns, true}, new String[] {String[].class.getName(), boolean.class.getName()});
或者,它可以通过代理调用如下:
String[] myPatterns = ...; FooMBean fooProxy = JMX.newMBeanProxy( mbeanServerConnection, objectName, FooMBean.class); int count = fooProxy.countMatches(myPatterns, true);
- Specified by:
-
invoke
在接口MBeanServerConnection
- 参数
-
name
- 要在其上调用该方法的MBean的对象名称。 -
operationName
- 要调用的操作的名称。 -
params
- 包含调用操作时要设置的参数的数组 -
signature
- 包含操作签名的数组,由Class.getName()
返回的格式的类名数组。 将使用与用于加载调用操作的MBean相同的类加载器来加载类对象。 - 结果
- 由操作返回的对象,表示在指定的MBean上调用操作的结果。
- 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
MBeanException
- 包装MBean调用方法抛出的异常。 -
ReflectionException
- 在尝试调用该方法时抛出一个java.lang.Exception
。
-
getDefaultDomain
String getDefaultDomain()
说明从界面MBeanServerConnection
复制返回用于命名MBean的默认域。 如果用户没有指定域,默认域名将用作MBeans的ObjectName中的域部分。- Specified by:
-
getDefaultDomain
在接口MBeanServerConnection
- 结果
- 默认域。
-
getDomains
String[] getDomains()
描述从接口MBeanServerConnection
复制返回任何MBean当前注册的域列表。 当且仅当至少有一个MBean注册了一个ObjectName,其中一个字符串的值为
getDomain()
等于该字符串时,则返回数组中的字符串。 未定义返回的数组中的字符串顺序。- Specified by:
-
getDomains
在接口MBeanServerConnection
- 结果
- 域列表。
-
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
- 过滤器对象。 如果过滤器为空,则在处理通知之前不会执行过滤。 -
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
- 过滤器对象。 如果过滤器为空,则在处理通知之前不会执行过滤。 -
handback
- 发出通知时发送到侦听器的上下文。 - 异常
-
RuntimeOperationsException
- 包裹一个IllegalArgumentException
。 由listener
命名的MBean存在但不实现NotificationListener
接口。 -
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中删除一个监听器。如果监听器注册不止一次,也许使用不同的过滤器或回调函数,此方法将删除所有这些注册。
- Specified by:
-
removeNotificationListener
在接口MBeanServerConnection
- 参数
-
name
- 要删除侦听器的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必须有一个与给定匹配的侦听
listener
,filter
,并handback
参数。 如果有多个这样的听众,只有一个被删除。当且仅当在要删除的侦听器中为空时,
filter
和handback
参数可能为空。- Specified by:
-
removeNotificationListener
接口MBeanServerConnection
- 参数
-
name
- 应删除侦听器的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中删除一个监听器。
如果监听器注册不止一次,也许使用不同的过滤器或回调函数,此方法将删除所有这些注册。
- Specified by:
-
removeNotificationListener
接口MBeanServerConnection
- 参数
-
name
- 应删除侦听器的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必须有一个与给定匹配的侦听
listener
,filter
,并handback
参数。 如果有多个这样的听众,只有一个被删除。filter
和handback
参数可以为null,如果且仅当在要删除的侦听器中为空时才可以为null。- Specified by:
-
removeNotificationListener
在接口MBeanServerConnection
- 参数
-
name
- 应删除侦听器的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公开管理的属性和操作。- Specified by:
-
getMBeanInfo
接口MBeanServerConnection
- 参数
-
name
- 要分析的MBean的名称 - 结果
-
MBeanInfo
一个实例允许检索此MBean的所有属性和操作。 - 异常
-
InstanceNotFoundException
- 未找到指定的MBean。 -
IntrospectionException
- 内省时发生异常。 -
ReflectionException
- 尝试调用动态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
,则结果为真。否则,如果L成功加载
className
并且X是此类的一个实例,则结果为true。否则,如果L成功加载N和
className
,并且第二个类可以从第一个类可分配,则结果为true。否则,结果是假的。
- Specified by:
-
isInstanceOf
在接口MBeanServerConnection
- 参数
-
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.ClassNotFoundException
或尝试调用对象的构造函数时发生的java.lang.Exception
。 -
MBeanException
- 对象的构造函数已抛出异常 -
RuntimeOperationsException
- 包裹一个java.lang.IllegalArgumentException
:传入参数的className为null。
-
instantiate
Object instantiate(String className, ObjectName loaderName) throws ReflectionException, MBeanException, InstanceNotFoundException
使用由其
ObjectName
指定的类Loader来实例化一个对象。 如果加载程序名称为空,则将使用加载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
- 包裹一个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.ClassNotFoundException
或尝试调用对象的构造函数时发生的java.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.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
已过时。 使用getClassLoaderFor
获取适当的反序列化类加载器。在MBean的类加载器的上下文中取消序列化字节数组。
- 实现要求:
-
默认情况下,此方法将抛出
UnsupportedOperationException
。 - 参数
-
name
- 其类加载器应用于name
序列化的MBean的名称。 -
data
- 要data
的字节数组。 - 结果
- 反序列化对象流。
- 异常
-
InstanceNotFoundException
- 找不到指定的MBean。 -
OperationsException
- 任何常见的输入/输出相关异常。
-
deserialize
@Deprecated(since="1.5") default ObjectInputStream deserialize(String className, byte[] data) throws OperationsException, ReflectionException
已过时。 使用getClassLoaderRepository()
获取类加载程序库,并将其用于反序列化。在给定的MBean类加载器的上下文中取消序列化字节数组。 通过
Class Loader Repository
加载类className
找到类加载器。 结果类的类加载器是使用的。- 实现要求:
-
此方法默认值为
UnsupportedOperationException
。 - 参数
-
className
- 类装载器应用于className
序列化的类的名称。 -
data
- 要data
的字节数组。 - 结果
- 反序列化对象流。
- 异常
-
OperationsException
- 任何通常的输入/输出相关异常。 -
ReflectionException
- 类加载程序库无法加载指定的类
-
deserialize
@Deprecated(since="1.5") default ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data) throws InstanceNotFoundException, OperationsException, ReflectionException
已过时。 使用getClassLoader
获取反序列化的类加载器。在给定的MBean类加载器的上下文中取消序列化字节数组。 类加载器是加载名为“className”的类的加载器。 指定用于加载指定类的类加载器的名称。 如果为空,则将使用MBean Server的类加载器。
- 实现要求:
-
此方法默认值为
UnsupportedOperationException
。 - 参数
-
className
- 类加载器应用于className
序列化的类的名称。 -
data
- 要data
的字节数组。 -
loaderName
- 用于加载指定类的类加载器的名称。 如果为空,则将使用MBean Server的类加载器。 - 结果
- 反序列化对象流。
- 异常
-
InstanceNotFoundException
- 找不到指定的类加载器MBean。 -
OperationsException
- 任何常见的输入/输出相关异常。 -
ReflectionException
- 指定的类不能由指定的类加载器加载。
-
getClassLoaderFor
ClassLoader getClassLoaderFor(ObjectName mbeanName) throws InstanceNotFoundException
返回用于加载名为MBean的类的
ClassLoader
。- 参数
-
mbeanName
- MBean的ObjectName。 - 结果
-
ClassBoader用于该MBean。
如果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。
-
-