|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface MBeanServer
这是在代理端进行 MBean 操作的接口。它包含创建、注册和删除 MBean 所需的方法,以及已注册 MBean 的访问方法。这是 JMX 基础设施的核心组件。
用户代码通常不实现此接口。相反,应该使用 MBeanServerFactory
类中的某个方法获得实现此接口的对象。
添加到 MBean 服务器中的所有 MBean 都会变成可管理的:通过连接到该 MBeanServer 的连接器/适配器可以远程访问其属性和操作。Java 对象不能在 MBean 服务器中进行注册,除非它是 JMX 兼容的 MBean。
在 MBean 服务器中注册或注销 MBean 时,会发出一个 MBeanServerNotification
Notification。要将一个对象注册为 MBeanServerNotifications 的侦听器,应该使用 MBeanServerDelegate
的 ObjectName
作为 ObjectName
参数调用 MBean 服务器方法 addNotificationListener
。此 ObjectName
是:JMImplementation:type=MBeanServerDelegate
。
从 MBeanServerFactory
类的 createMBeanServer
或 newMBeanServer
方法所获得的对象会对其方法进行安全检查,如下所示:
首先,如果没有安全管理器(System.getSecurityManager()
为 null),则不进行检查。
假定存在安全管理器,则进行检查,检查细节如下;className
是目标 MBean 的 MBeanInfo.getClassName()
所返回的字符串。
如果安全检查失败,则该方法抛出 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, name, "queryMBeans")
。另外,对于与 name
匹配的每个 MBean,如果调用方的权限未隐含 MBeanPermission(className, null, name, "queryMBeans")
,则 MBean 服务器的行为与该 MBean 不存在一样。
某些查询元素在 MBean 服务器上执行操作。如果调用方不具有针对给定 MBean 的所需权限,则查询结果中不包括该 MBean。受此影响的标准查询元素是 Query.attr(String)
、Query.attr(String,String)
和 Query.classattr()
。
对于 queryNames
方法,执行的检查与 queryMBeans
方法相同,除了在 MBeanPermission
对象中使用 "queryNames"
而不是 "queryMBeans"
。注意,"queryMBeans"
权限隐含相应的 "queryNames"
权限。
对于 getDomains
方法,调用方的权限必须隐含 MBeanPermission(null, null, name, "getDomains")
。另外,对于返回数组中的每个域 d,如果调用方的权限未隐含 MBeanPermission(null, null, new ObjectName("d:x=x"), "getDomains")
,则从数组中消除该域。其中 x=x
是任意键=值 对,需要满足 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")
。
对于 registerMBean
方法,调用方的权限必须隐含 MBeanPermission(className, null, name, "registerMBean")
。其中 className
是 MBeanInfo.getClassName()
为此类某个对象返回的字符串。
如果 MBeanPermission
检查成功,则验证该 MBean 的类,方法是检查其 ProtectionDomain
是否隐含 MBeanTrustPermission("register")
。
最后,如果 name
参数为 null,则使用 MBeanRegistration.preRegister
返回的 ObjectName
进行另一次 MBeanPermission
检查。
对于 createMBean
方法,调用方法的权限必须隐含等效的 instantiate
后跟 registerMBean
所需的权限。
对于 unregisterMBean
方法,调用方的权限必须隐含 MBeanPermission(className, null, name, "unregisterMBean")
。
方法摘要 | |
---|---|
void |
addNotificationListener(ObjectName name,
NotificationListener listener,
NotificationFilter filter,
Object handback)
向已注册的 MBean 添加一个侦听器。 |
void |
addNotificationListener(ObjectName name,
ObjectName listener,
NotificationFilter filter,
Object handback)
向已注册的 MBean 添加一个侦听器。 |
ObjectInstance |
createMBean(String className,
ObjectName name)
在 MBean 服务器中实例化并注册一个 MBean。 |
ObjectInstance |
createMBean(String className,
ObjectName name,
Object[] params,
String[] signature)
在 MBean 服务器中实例化并注册一个 MBean。 |
ObjectInstance |
createMBean(String className,
ObjectName name,
ObjectName loaderName)
在 MBean 服务器中实例化并注册一个 MBean。 |
ObjectInstance |
createMBean(String className,
ObjectName name,
ObjectName loaderName,
Object[] params,
String[] signature)
在 MBean 服务器中实例化并注册一个 MBean。 |
ObjectInputStream |
deserialize(ObjectName name,
byte[] data)
已过时。 使用 getClassLoaderFor 为反序列化获得合适的类加载器。 |
ObjectInputStream |
deserialize(String className,
byte[] data)
已过时。 使用 getClassLoaderRepository() 来获得类加载器存储库并使用它进行反序列化。 |
ObjectInputStream |
deserialize(String className,
ObjectName loaderName,
byte[] data)
已过时。 使用 getClassLoader 为反序列化获得类加载器。 |
Object |
getAttribute(ObjectName name,
String attribute)
获得指定 MBean 的特定属性值。 |
AttributeList |
getAttributes(ObjectName name,
String[] attributes)
获得指定 MBean 的多个属性值。 |
ClassLoader |
getClassLoader(ObjectName loaderName)
返回指定的 ClassLoader 。 |
ClassLoader |
getClassLoaderFor(ObjectName mbeanName)
返回用于加载指定 MBean 的类的 ClassLoader 。 |
ClassLoaderRepository |
getClassLoaderRepository()
返回此 MBeanServer 的 ClassLoaderRepository。 |
String |
getDefaultDomain()
返回对 MBean 命名时使用的默认域。 |
String[] |
getDomains()
返回其中所有 MBean 当前已注册的域的列表。 |
Integer |
getMBeanCount()
返回 MBean 服务器中已注册的 MBean 数目。 |
MBeanInfo |
getMBeanInfo(ObjectName name)
此方法发现了 MBean 为管理而公开的属性和操作。 |
ObjectInstance |
getObjectInstance(ObjectName name)
获得向 MBean 服务器注册的给定 MBean 的 ObjectInstance 。 |
Object |
instantiate(String className)
使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表实例化一个对象。 |
Object |
instantiate(String className,
Object[] params,
String[] signature)
使用 MBean 服务器的 Class Loader Repository 中所有已注册的类加载器列表实例化一个对象。 |
Object |
instantiate(String className,
ObjectName loaderName)
使用由某个对象的 ObjectName 所指定的类加载器实例化该对象。 |
Object |
instantiate(String className,
ObjectName loaderName,
Object[] params,
String[] signature)
实例化一个对象。 |
Object |
invoke(ObjectName name,
String operationName,
Object[] params,
String[] signature)
在 MBean 上调用某个操作。 |
boolean |
isInstanceOf(ObjectName name,
String className)
如果指定的 MBean 是指定类的一个实例,则返回 true;否则返回 false。 |
boolean |
isRegistered(ObjectName name)
检查某个 MBean(通过其对象名标识)是否已向 MBean 服务器注册。 |
Set |
queryMBeans(ObjectName name,
QueryExp query)
获得该 MBean 服务器所控制的 MBean。 |
Set |
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。 |
方法详细信息 |
---|
ObjectInstance createMBean(String className, ObjectName name) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException
在 MBean 服务器中实例化并注册一个 MBean。MBean 服务器将使用其默认的 Loader Repository
来加载 MBean 的类。对象名与该 MBean 相关联。 如果给定的对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration
接口并从 preRegister
方法中返回名称。
此方法等效于 createMBean(className, name, (Object[]) null, (String[]) null)
。
MBeanServerConnection
中的 createMBean
className
- 要实例化的 MBean 的类名。name
- MBean 的对象名。可以为 null。
ObjectInstance
,包含新初始化的 MBean 的 ObjectName
和 Java 类名。如果包含的 ObjectName
是 n
,则所包含的 Java 类名是 getMBeanInfo(n)
.getClassName()
。
ReflectionException
- 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundException
或 java.lang.Exception
。
InstanceAlreadyExistsException
- 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException
- 如果 MBean 的 preRegister
(MBeanRegistration
接口)方法已经抛出异常。不注册该 MBean。
MBeanException
- 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException
- 如果此类不是符合 JMX 的 MBean
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果传入参数中的 className 为 null,传入参数中的 ObjectName
包含一个模式或者没有为该 MBean 指定 ObjectName
。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)
。
MBeanServerConnection
中的 createMBean
className
- 要实例化的 MBean 的类名。name
- MBean 的对象名。可以为 null。loaderName
- 要使用的类加载器的对象名。
ObjectInstance
,包含新初始化的 MBean 的 ObjectName
和 Java 类名。如果包含的 ObjectName
是 n
,则所包含的 Java 类名是 getMBeanInfo(n)
.getClassName()
。
ReflectionException
- 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundException
或 java.lang.Exception
。
InstanceAlreadyExistsException
- 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException
- 如果 MBean 的 preRegister
(MBeanRegistration
接口)方法已经抛出异常。不注册该 MBean。
MBeanException
- 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException
- 如果此类不是符合 JMX 的 MBean
InstanceNotFoundException
- 如果未在 MBean 服务器中注册指定的类加载器。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果传入参数中的 className 为 null,传入参数中的 ObjectName
包含一个模式或者没有为该 MBean 指定 ObjectName
。ObjectInstance createMBean(String className, ObjectName name, Object[] params, String[] signature) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException
默认的 Loader Repository
来加载 MBean 的类。对象名与该 MBean 相关联。如果给定的对象名为 null,则该 MBean 必须提供自己的名称,方法是实现 MBeanRegistration
接口并从 preRegister
方法中返回名称。
MBeanServerConnection
中的 createMBean
className
- 要实例化的 MBean 的类名。name
- MBean 的对象名。可以为 null。params
- 一个数组,包含要调用的构造方法的参数。signature
- 一个数组,包含要调用的构造方法的签名。
ObjectInstance
,包含新初始化的 MBean 的 ObjectName
和 Java 类名。如果包含的 ObjectName
是 n
,则所包含的 Java 类名是 getMBeanInfo(n)
.getClassName()
。
ReflectionException
- 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundException
或 java.lang.Exception
。
InstanceAlreadyExistsException
- 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException
- 如果 MBean 的 preRegister
(MBeanRegistration
接口)方法已经抛出异常。不注册该 MBean。
MBeanException
- 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException
- 如果此类不是 JMX 兼容的 MBean
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果传入参数中的 className 为 null,传入参数中的 ObjectName
包含一个模式或者没有为该 MBean 指定 ObjectName
。ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Object[] params, String[] signature) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException
MBeanRegistration
接口并从 preRegister
方法中返回名称。
MBeanServerConnection
中的 createMBean
className
- 要实例化的 MBean 的类名。name
- MBean 的对象名。可以为 null。params
- 一个数组,包含要调用的构造方法的参数。signature
- 一个数组,包含要调用的构造方法的签名。loaderName
- 要使用的类加载器的对象名。
ObjectInstance
,包含新初始化的 MBean 的 ObjectName
和 Java 类名。如果包含的 ObjectName
是 n
,则所包含的 Java 类名是 getMBeanInfo(n)
.getClassName()
。
ReflectionException
- 包装在试图调用 MBean 的构造方法时所出现的 java.lang.ClassNotFoundException
或 java.lang.Exception
。
InstanceAlreadyExistsException
- 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException
- 如果 MBean 的 preRegister
(MBeanRegistration
接口)方法已经抛出异常。不注册该 MBean。
MBeanException
- 如果 MBean 的构造方法已经抛出异常
NotCompliantMBeanException
- 如果此类不是符合 JMX 的 MBean
InstanceNotFoundException
- 如果未在 MBean 服务器中注册指定的类加载器。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果传入参数中的 className 为 null,传入参数中的 ObjectName
包含一个模式或者没有为该 MBean 指定 ObjectName
。ObjectInstance registerMBean(Object object, ObjectName name) throws InstanceAlreadyExistsException, MBeanRegistrationException, NotCompliantMBeanException
MBeanRegistration
接口并从 preRegister
方法中返回名称。
object
- 要作为 MBean 注册的 MBean。name
- MBean 的对象名。可以为 null。
ObjectInstance
,包含新注册的 MBean 的 ObjectName
和 Java 类名。如果包含的 ObjectName
是 n
,则所包含的 Java 类名是 getMBeanInfo(n)
.getClassName()
。
InstanceAlreadyExistsException
- 如果该 MBean 已经处于 MBean 服务器的控制之下。
MBeanRegistrationException
- 如果 MBean 的 preRegister
(MBeanRegistration
接口)方法已经抛出异常。不注册该 MBean。
NotCompliantMBeanException
- 如果此对象不是 JMX 兼容的 MBean
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果传入参数中的对象为 null 或者未指定对象名。void unregisterMBean(ObjectName name) throws InstanceNotFoundException, MBeanRegistrationException
MBeanServerConnection
中的 unregisterMBean
name
- 要注销的 MBean 的对象名。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
MBeanRegistrationException
- 如果 MBean 的 preDeregister(MBeanRegistration
接口)方法已经抛出异常。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null,或者试图注销的 MBean 是 MBeanServerDelegate
MBean。ObjectInstance getObjectInstance(ObjectName name) throws InstanceNotFoundException
ObjectInstance
。
MBeanServerConnection
中的 getObjectInstance
name
- MBean 的对象名。
ObjectInstance
。包含的 ObjectName
是 name
, 且所包含的类名是 getMBeanInfo(name)
.getClassName()
。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。Set queryMBeans(ObjectName name, QueryExp query)
ObjectName
和/或 Query 表达式相匹配的模式所指定的一组 MBean、一个特定的 MBean。当对象名为 null 并且未指定域和键属性时,会选中所有对象(如果指定了查询,则进行过滤)。它返回已选中 MBean 的 ObjectInstance
对象集(包含 ObjectName
和 Java 类名)
MBeanServerConnection
中的 queryMBeans
name
- 对象名模式,标识要检索的 MBean。如果为 null 或未指定域和键属性,则检索所有已注册的 MBean。query
- 应用到所选 MBean 的查询表达式。如果为 null,则不对选中 MBean 应用查询表达式。
ObjectInstance
对象的集合。如果没有满足该查询的 MBean,则返回空集合。Set queryNames(ObjectName name, QueryExp query)
ObjectName
和/或 Query 表达式相匹配的模式所指定的一组 MBean 的名称、一个特定 MBean 的名称(等效于测试是否已注册某个 MBean)。当对象名为 null 并且未指定域和键属性时,会选中所有对象(如果指定了查询,则进行过滤)。它返回已选中的 MBean 的 ObjectNames 集合。
MBeanServerConnection
中的 queryNames
name
- 对象名模式,标识要检索的 MBean 名称。如果为 null 或未指定域和键属性,则检索所有已注册的 MBean 的名称。query
- 应用到所选 MBean 的查询表达式。如果为 null,则不对选中 MBean 应用查询表达式。
boolean isRegistered(ObjectName name)
MBeanServerConnection
中的 isRegistered
name
- 要检查的 MBean 的对象名。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null。Integer getMBeanCount()
MBeanServerConnection
中的 getMBeanCount
Object getAttribute(ObjectName name, String attribute) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException
MBeanServerConnection
中的 getAttribute
name
- MBean 的对象名,要通过该对象名检索 MBean 的属性。attribute
- 指定要检索的属性名的 String。
AttributeNotFoundException
- 如果指定的属性在 MBean 中是不可访问的。
MBeanException
- 包装 MBean 的 getter 所抛出的异常。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException
- 包装试图调用 setter 时所抛出的 java.lang.Exception
。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null 或者参数中的属性为 null。setAttribute(javax.management.ObjectName, javax.management.Attribute)
AttributeList getAttributes(ObjectName name, String[] attributes) throws InstanceNotFoundException, ReflectionException
MBeanServerConnection
中的 getAttributes
name
- MBean 的对象名,通过该对象名检索该 MBean 的属性。attributes
- 要检索的属性列表。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException
- 试图调用 Dynamic MBean 的 getAttributes 方法时抛出的异常。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null 或者参数中的属性为 null。setAttributes(javax.management.ObjectName, javax.management.AttributeList)
void setAttribute(ObjectName name, Attribute attribute) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException
MBeanServerConnection
中的 setAttribute
name
- 要设置其属性的 MBean 的名称。attribute
- 要设置的属性的标识及其要设置成的值。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
AttributeNotFoundException
- 如果指定的属性在 MBean 中是不可访问的。
InvalidAttributeValueException
- 如果为该属性指定的值无效。
MBeanException
- 包装 MBean 的 setter 所抛出的异常。
ReflectionException
- 包装试图调用 setter 时所抛出的 java.lang.Exception
。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null 或者参数中的属性为 null。getAttribute(javax.management.ObjectName, java.lang.String)
AttributeList setAttributes(ObjectName name, AttributeList attributes) throws InstanceNotFoundException, ReflectionException
MBeanServerConnection
中的 setAttributes
name
- 要设置其属性的 MBean 的对象名。attributes
- 属性列表:要设置的属性的标识及其要设置成的值。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
ReflectionException
- 试图调用 Dynamic MBean 的 setAttributes 方法时抛出的异常。
RuntimeOperationsException
- 包装 java.lang.IllegalArgumentException
:如果参数中的对象名为 null 或者参数中的属性为 null。getAttributes(javax.management.ObjectName, java.lang.String[])
Object invoke(ObjectName name, String operationName, Object[] params, String[] signature) throws InstanceNotFoundException, MBeanException, ReflectionException
MBeanServerConnection
中的 invoke
name
- MBean 的对象名,要在该 MBean 上调用方法。operationName
- 要调用的操作名。params
- 一个数组,包含调用操作时要设置的参数signature
- 包含操作签名的数组。用于加载类对象的类加载器与用于加载 MBean (要在其上调用操作)的类加载器相同。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。
MBeanException
- 包装在 MBean 上调用的方法所抛出的异常。
ReflectionException
- 包装试图调用该方法时所抛出的 java.lang.Exception
。String getDefaultDomain()
MBeanServerConnection
中的 getDefaultDomain
String[] getDomains()
返回其中所有 MBean 当前已注册的域的列表。当且仅当至少有一个已注册的 MBean 并且其 ObjectName 的 getDomain()
等于某个字符串时,返回的数组中才有该字符串。返回数组中各个字符串的顺序是未定义的。
MBeanServerConnection
中的 getDomains
void addNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException
向已注册的 MBean 添加一个侦听器。
MBeanServer 将 MBean 发出的通知转发到该侦听器。如果通知源是对 MBean 对象的引用,则 MBean 服务器将根据 MBean 的 ObjectName 替换它。否则不更改通知源。
MBeanServerConnection
中的 addNotificationListener
name
- MBean 的名称,将在该 MBean 上添加侦听器。listener
- 侦听器对象,它将处理已注册的 MBean 所发出的通知。filter
- 过滤器对象。如果 filter 为 null,则处理通知前不执行过滤。handback
- 发出通知时要发送到侦听器的上下文。
InstanceNotFoundException
- 如果提供的 MBean 与任何已注册 MBean 都不匹配。removeNotificationListener(ObjectName, NotificationListener)
,
removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
void addNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException
向已注册的 MBean 添加一个侦听器。
MBeanServer 将 MBean 发出的通知转发到该侦听器。如果通知源是对 MBean 对象的引用,则 MBean 服务器将根据 MBean 的 ObjectName 替换它。否则不更改通知源。
接收通知的侦听器对象是在调用此方法时使用给定名称注册的。即使之后注销了该侦听器,它也将继续接收通知。
MBeanServerConnection
中的 addNotificationListener
name
- MBean 的名称,将在该 MBean 上添加侦听器。listener
- 侦听器的对象名,它将处理已注册的 MBean 所发出的通知。filter
- 过滤器对象。如果 filter 为 null,则处理通知前不执行过滤。handback
- 发出通知时要发送到侦听器的上下文。
InstanceNotFoundException
- 如果通知侦听器或者通知广播器的 MBean 名与任何已注册的 MBean 都不匹配。
RuntimeOperationsException
- 包装 IllegalArgumentException
。如果 listener
指定的 MBean 存在但是未实现 NotificationListener
接口。removeNotificationListener(ObjectName, ObjectName)
,
removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
void removeNotificationListener(ObjectName name, ObjectName listener) throws InstanceNotFoundException, ListenerNotFoundException
如果可能使用不同过滤器或回调多次注册了该侦听器,则此方法将移除所有这些注册关系。
name
- MBean 的名称,将移除该 MBean 上的侦听器。listener
- 要移除的侦听器的对象名。
InstanceNotFoundException
- 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException
- 如果该侦听器未在 MBean 中注册。addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
void removeNotificationListener(ObjectName name, ObjectName listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException, ListenerNotFoundException
从已注册的 MBean 中移除一个侦听器。
该 MBean 必须具有一个与给定 listener
、filter
和 handback
参数完全匹配的侦听器。如果存在多个这样的侦听器,则只移除一个。
当且仅当 filter
和 handback
在要移除的侦听器中为 null 时,这两个参数才可以为 null。
name
- MBean 的名称,将移除该 MBean 上的侦听器。listener
- 以前添加到此 MBean 的侦听器。filter
- 添加侦听器时所指定的过滤器。handback
- 添加侦听器时所指定的回调。
InstanceNotFoundException
- 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException
- 如果侦听器未在 MBean 中注册,或者没有用给定的过滤器和回调注册它。addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
void removeNotificationListener(ObjectName name, NotificationListener listener) throws InstanceNotFoundException, ListenerNotFoundException
从已注册的 MBean 中移除一个侦听器。
如果可能使用不同过滤器或回调多次注册了该侦听器,则此方法将移除所有这些注册关系。
name
- MBean 的名称,将移除该 MBean 上的侦听器。listener
- 要移除的侦听器的对象名。
InstanceNotFoundException
- 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException
- 如果该侦听器未在 MBean 中注册。addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
void removeNotificationListener(ObjectName name, NotificationListener listener, NotificationFilter filter, Object handback) throws InstanceNotFoundException, ListenerNotFoundException
从已注册的 MBean 中移除一个侦听器。
该 MBean 必须具有一个与给定 listener
、filter
和 handback
参数完全匹配的侦听器。如果存在多个这样的侦听器,则只移除一个。
当且仅当 filter
和 handback
在要移除的侦听器中为 null 时,这两个参数才可以为 null。
name
- MBean 的名称,将移除该 MBean 上的侦听器。listener
- 以前添加到此 MBean 的侦听器。filter
- 添加侦听器时所指定的过滤器。handback
- 添加侦听器时所指定的回调。
InstanceNotFoundException
- 如果提供的 MBean 与任何已注册 MBean 都不匹配。
ListenerNotFoundException
- 如果侦听器未在 MBean 中注册,或者没有用给定的过滤器和回调注册它。addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
MBeanInfo getMBeanInfo(ObjectName name) throws InstanceNotFoundException, IntrospectionException, ReflectionException
MBeanServerConnection
中的 getMBeanInfo
name
- 要分析的 MBean 名称
MBeanInfo
实例,允许检索此 MBean 的所有属性和操作。
IntrospectionException
- 如果在 introspection 期间出现异常。
InstanceNotFoundException
- 如果未找到指定的 MBean。
ReflectionException
- 试图调用 Dynamic MBean 的 getMBeanInfo 方法时抛出的异常。boolean isInstanceOf(ObjectName name, String className) throws InstanceNotFoundException
如果指定的 MBean 是指定类的一个实例,则返回 true;否则返回 false。
如果 name
不是 MBean 的名称,则此方法抛出 InstanceNotFoundException
。
否则,假定
X 是 name
所命名的 MBean、
L 是 X 的 ClassLoader、
N 是 X 的 MBeanInfo
中的类名。
如果 N 等于 className
,则结果为 true。
否则,如果 L 成功地加载了 N 和 className
,并且由于第一个类而使第二个类是可分配的,则结果为 true。
否则结果为 false。
MBeanServerConnection
中的 isInstanceOf
name
- MBean 的 ObjectName
。className
- 类名。
InstanceNotFoundException
- 如果指定的 MBean 未在该 MBean 服务器中注册。Class.isAssignableFrom(Class)
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。Object instantiate(String className, ObjectName loaderName) throws ReflectionException, MBeanException, InstanceNotFoundException
使用由某个对象的 ObjectName
所指定的类加载器实例化该对象。如果加载器名为 null,则将使用加载 MBean 服务器的 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。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。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。@Deprecated ObjectInputStream deserialize(ObjectName name, byte[] data) throws InstanceNotFoundException, OperationsException
getClassLoaderFor
为反序列化获得合适的类加载器。
在 MBean 的类加载器上下文中反序列化一个 byte 数组。
name
- MBean 名,该 MBean 的类加载器应该用于反序列化。data
- 要被反序列化的 byte 数组。
InstanceNotFoundException
- 如果未找到指定的 MBean。
OperationsException
- 任何常规的输入/输出相关的异常。@Deprecated ObjectInputStream deserialize(String className, byte[] data) throws OperationsException, ReflectionException
getClassLoaderRepository()
来获得类加载器存储库并使用它进行反序列化。
在给定的 MBean 类加载器上下文中反序列化一个 byte 数组。通过 Class Loader Repository
加载类 className
来找到该类加载器。结果类的类加载器就是要使用的类加载器。
className
- 类名,该类的类加载器应该用于反序列化。data
- 要被反序列化的 byte 数组。
OperationsException
- 任何常规的输入/输出相关的异常。
ReflectionException
- 如果无法由类加载器存储库加载指定的类@Deprecated ObjectInputStream deserialize(String className, ObjectName loaderName, byte[] data) throws InstanceNotFoundException, OperationsException, ReflectionException
getClassLoader
为反序列化获得类加载器。
在给定的 MBean 类加载器上下文中反序列化一个 byte 数组。该类加载器是加载名为 "className" 的类的类加载器。用于加载指定类的类加载器的名称是指定的。如果为 null,则使用 MBean 服务器的类加载器。
className
- 类名,该类的类加载器应该用于反序列化。data
- 要被反序列化的 byte 数组。loaderName
- 用于加载指定类的类加载器的名称。如果为 null,则使用 MBean 服务器的类加载器。
InstanceNotFoundException
- 如果未找到指定的类加载器 MBean。
OperationsException
- 任何常规的输入/输出相关的异常。
ReflectionException
- 无法由指定类加载器加载指定的类。ClassLoader getClassLoaderFor(ObjectName mbeanName) throws InstanceNotFoundException
返回用于加载指定 MBean 的类的 ClassLoader
。
mbeanName
- MBean 的 ObjectName。
.loadClass(s)
的结果与 l.loadClass(s)
的结果相同。
InstanceNotFoundException
- 如果未找到指定的 MBean。ClassLoader getClassLoader(ObjectName loaderName) throws InstanceNotFoundException
返回指定的 ClassLoader
。
loaderName
- ClassLoader 的 ObjectName。可以为 null,在这种情况下,则返回该 MBean 服务器自己的 ClassLoader。
.loadClass(s)
的结果与 l.loadClass(s)
的结果相同。
InstanceNotFoundException
- 如果未找到指定的 ClassLoader。ClassLoaderRepository getClassLoaderRepository()
返回此 MBeanServer 的 ClassLoaderRepository。
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。