- 所有超级接口:
-
AutoCloseable
,Closeable
,Remote
- 所有已知实现类:
-
RMIConnectionImpl
,RMIConnectionImpl_Stub
RMI对象用于将来自客户端的MBeanServer请求转发到服务器端的MBeanServer实现。每个连接到RMI连接器的远程客户端都有一个实现此接口的远程对象。
用户代码通常不会引用此接口。它作为公共API的一部分进行了规定,以便该API的不同实现可以互操作。
为了确保客户端参数在服务器端使用正确的类加载器进行反序列化,例如用于调用方法的参数被包装在一个MarshalledObject
中。此接口的实现必须首先获取操作和目标的适当类加载器,然后使用该类加载器反序列化封送的参数。除非另有说明,否则MarshalledObject
或MarshalledObject[]
类型的参数不得为null;如果为null,则行为是未指定的。
类加载方面的详细信息在JMX规范,版本1.4中有详细说明
此接口中的大多数方法与MBeanServerConnection
接口中的方法相对应。如果某个方法的行为方面在此处未指定,则与相应的MBeanServerConnection
方法相同。
- 自:
- 1.5
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addNotificationListener
(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) Integer[]
addNotificationListeners
(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects) void
close()
关闭此连接。createMBean
(String className, ObjectName name, MarshalledObject params, String[] signature, Subject delegationSubject) createMBean
(String className, ObjectName name, ObjectName loaderName, MarshalledObject params, String[] signature, Subject delegationSubject) createMBean
(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject) createMBean
(String className, ObjectName name, Subject delegationSubject) fetchNotifications
(long clientSequenceNumber, int maxNotifications, long timeout) 从连接器服务器检索通知。getAttribute
(ObjectName name, String attribute, Subject delegationSubject) getAttributes
(ObjectName name, String[] attributes, Subject delegationSubject) 返回连接ID。getDefaultDomain
(Subject delegationSubject) String[]
getDomains
(Subject delegationSubject) getMBeanCount
(Subject delegationSubject) getMBeanInfo
(ObjectName name, Subject delegationSubject) getObjectInstance
(ObjectName name, Subject delegationSubject) invoke
(ObjectName name, String operationName, MarshalledObject params, String[] signature, Subject delegationSubject) boolean
isInstanceOf
(ObjectName name, String className, Subject delegationSubject) boolean
isRegistered
(ObjectName name, Subject delegationSubject) queryMBeans
(ObjectName name, MarshalledObject query, Subject delegationSubject) queryNames
(ObjectName name, MarshalledObject query, Subject delegationSubject) void
removeNotificationListener
(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) void
removeNotificationListener
(ObjectName name, ObjectName listener, Subject delegationSubject) void
removeNotificationListeners
(ObjectName name, Integer[] listenerIDs, Subject delegationSubject) void
setAttribute
(ObjectName name, MarshalledObject attribute, Subject delegationSubject) setAttributes
(ObjectName name, MarshalledObject attributes, Subject delegationSubject) void
unregisterMBean
(ObjectName name, Subject delegationSubject)
-
Method Details
-
getConnectionId
返回连接ID。对于给定RMI连接器服务器的每个打开连接,此字符串都是不同的。
- 返回:
- 连接ID
- 抛出:
-
IOException
- 如果发生一般通信异常。 - 参见:
-
close
关闭此连接。从此方法返回后,实现此接口的RMI对象将被取消导出,因此对其进行进一步的远程调用将失败。
- 指定者:
-
close
在接口AutoCloseable
- 指定者:
-
close
在接口Closeable
- 抛出:
-
IOException
- 如果无法关闭连接,或无法取消导出远程对象,或在传输远程关闭请求时发生通信故障。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, IOException - 参数:
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。可以为null。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为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
:传入参数的类名为null,传入参数的ObjectName
包含模式,或未为MBean指定ObjectName
。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException, IOException - 参数:
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。可以为null。 -
loaderName
- 要使用的类加载器的对象名称。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为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。 -
InstanceNotFoundException
- 指定的类加载器未在MBean服务器中注册。 -
RuntimeOperationsException
- 包装了java.lang.IllegalArgumentException
:传入参数的类名为null,传入参数的ObjectName
包含模式,或未为MBean指定ObjectName
。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, MarshalledObject params, String[] signature, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, IOException 处理方法MBeanServerConnection.createMBean(String, ObjectName, Object[], String[])
。参数Object[]
被包装在MarshalledObject
中。- 参数:
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。可以为null。 -
params
- 包含要调用的构造函数的参数的数组,封装在MarshalledObject
中。封装的数组可以为null,相当于空数组。 -
signature
- 包含要调用的构造函数的签名的数组。可以为null,相当于空数组。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为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
:传入参数的类名为null,传入参数的ObjectName
包含模式,或未为MBean指定ObjectName
。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, MarshalledObject params, String[] signature, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException, IOException 处理方法MBeanServerConnection.createMBean(String, ObjectName, ObjectName, Object[], String[])
。参数Object[]
被包装在MarshalledObject
中。- 参数:
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。可以为null。 -
loaderName
- 要使用的类加载器的对象名称。 -
params
- 包含要调用的构造函数的参数的数组,封装为MarshalledObject
。封装的数组可以为null,相当于一个空数组。 -
signature
- 包含要调用的构造函数的签名的数组。可以为null,相当于一个空数组。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为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。 -
InstanceNotFoundException
- 指定的类加载器未在MBean服务器中注册。 -
RuntimeOperationsException
- 包装了java.lang.IllegalArgumentException
:传递的参数中的类名为null,传递的ObjectName
中包含模式,或未为MBean指定ObjectName
。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
unregisterMBean
void unregisterMBean(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, MBeanRegistrationException, IOException - 参数:
-
name
- 要取消注册的MBean的对象名称。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
MBeanRegistrationException
- MBean的preDeregister
(MBeanRegistration
接口)方法抛出异常。 -
RuntimeOperationsException
- 包装了java.lang.IllegalArgumentException
:参数中的对象名称为null,或者尝试注销的MBean是MBeanServerDelegate
MBean。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
getObjectInstance
ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IOException - 参数:
-
name
- MBean的对象名称。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
-
与name指定的MBean相关联的
ObjectInstance
。包含的ObjectName
为name
,包含的类名为
。getMBeanInfo(name)
.getClassName() - 抛出:
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
RuntimeOperationsException
- 包装了java.lang.IllegalArgumentException
:参数中的对象名称为null。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
queryMBeans
Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException - 参数:
-
name
- 用于检索MBeans的对象名称模式。如果为null或未指定域和键属性,则将检索所有已注册的MBeans。 -
query
- 要应用于选择MBeans的查询表达式,封装在MarshalledObject
中。如果MarshalledObject
封装了null值,则不会应用任何查询表达式以选择MBeans。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
-
包含所选MBeans的
ObjectInstance
对象的集合。如果没有MBean满足查询条件,则返回一个空列表。 - 抛出:
-
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
queryNames
Set<ObjectName> queryNames(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException - 参数:
-
name
- 用于检索MBean名称的对象名称模式。如果为null或未指定域和键属性,则将检索所有已注册的MBean的名称。 -
query
- 要应用于选择MBeans的查询表达式,封装在MarshalledObject
中。如果MarshalledObject
封装了null值,则不会应用任何查询表达式以选择MBeans。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 包含所选MBeans的ObjectName的集合。如果没有MBean满足查询条件,则返回一个空列表。
- 抛出:
-
SecurityException
- 如果客户端或委托的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
isRegistered
- 参数:
-
name
- 要检查的MBean的对象名称。 -
delegationSubject
- 包含委派主体的Subject
,或者如果使用身份验证主体,则为null
。 - 返回:
- 如果MBean已在MBean服务器中注册,则为true,否则为false。
- 抛出:
-
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null。 -
SecurityException
- 如果客户端或任何委派的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
getMBeanCount
- 参数:
-
delegationSubject
- 包含委派主体的Subject
,或者如果使用身份验证主体,则为null
。 - 返回:
- 注册的MBean数量。
- 抛出:
-
SecurityException
- 如果客户端或任何委派的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
getAttribute
Object getAttribute(ObjectName name, String attribute, Subject delegationSubject) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException, IOException - 参数:
-
name
- 要检索属性的MBean的对象名称。 -
attribute
- 指定要检索的属性的名称的字符串。 -
delegationSubject
- 包含委派主体的Subject
,或者如果使用身份验证主体,则为null
。 - 返回:
- 检索属性的值。
- 抛出:
-
AttributeNotFoundException
- 指定的属性在MBean中不可访问。 -
MBeanException
- 包装了MBean的getter抛出的异常。 -
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 包装了在尝试调用getter时抛出的java.lang.Exception
。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
RuntimeMBeanException
- 包装了MBean的getter抛出的运行时异常。 -
SecurityException
- 如果客户端或任何委派的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 - 参见:
-
getAttributes
AttributeList getAttributes(ObjectName name, String[] attributes, Subject delegationSubject) throws InstanceNotFoundException, ReflectionException, IOException - 参数:
-
name
- 要检索属性的MBean的对象名称。 -
attributes
- 要检索的属性列表。 -
delegationSubject
- 包含委派主体的Subject
,或者如果使用身份验证主体,则为null
。 - 返回:
- 检索的属性列表。
- 抛出:
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用动态MBean的getAttributes方法时发生异常。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
SecurityException
- 如果客户端或任何委派的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 - 参见:
-
setAttribute
void setAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException, IOException - 参数:
-
name
- 要设置属性的MBean的名称。 -
attribute
- 要设置的属性的标识以及要设置的值,封装在MarshalledObject
中。 -
delegationSubject
- 包含委派主体的Subject
,或者如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
AttributeNotFoundException
- 指定的属性在MBean中不可访问。 -
InvalidAttributeValueException
- 指定的属性值无效。 -
MBeanException
- 包装了MBean的setter抛出的异常。 -
ReflectionException
- 包装了在尝试调用setter时抛出的java.lang.Exception
。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
SecurityException
- 如果客户端或任何委派的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 - 参见:
-
setAttributes
AttributeList setAttributes(ObjectName name, MarshalledObject attributes, Subject delegationSubject) throws InstanceNotFoundException, ReflectionException, IOException 处理方法MBeanServerConnection.setAttributes(ObjectName, AttributeList)
。参数AttributeList
被包装在MarshalledObject
中。- 参数:
-
name
- 要设置属性的MBean对象名称。 -
attributes
- 属性列表:要设置的属性的标识以及它们要设置的值,封装到一个MarshalledObject
中。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 已设置的属性列表及其新值。
- 抛出:
-
InstanceNotFoundException
- 在MBean服务器中未注册指定的MBean。 -
ReflectionException
- 尝试调用动态MBean的getAttributes方法时发生异常。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 - 参见:
-
invoke
Object invoke(ObjectName name, String operationName, MarshalledObject params, String[] signature, Subject delegationSubject) throws InstanceNotFoundException, MBeanException, ReflectionException, IOException 处理方法MBeanServerConnection.invoke(ObjectName, String, Object[], String[])
。Object[]
参数封装在MarshalledObject
中。- 参数:
-
name
- 要调用方法的MBean对象名称。 -
operationName
- 要调用的操作的名称。 -
params
- 包含在调用操作时要设置的参数的数组,封装到一个MarshalledObject
中。封装的数组可以为null,相当于一个空数组。 -
signature
- 包含操作的签名的数组。类对象将使用与调用操作的MBean相同的类加载器加载。可以为null,相当于一个空数组。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 操作返回的对象,表示在指定的MBean上调用操作的结果。
- 抛出:
-
InstanceNotFoundException
- 在MBean服务器中未注册指定的MBean。 -
MBeanException
- 包装了MBean调用方法抛出的异常。 -
ReflectionException
- 包装了在尝试调用方法时抛出的java.lang.Exception
。 -
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称或操作名称为null。
-
getDefaultDomain
- 参数:
-
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 默认域。
- 抛出:
-
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
getDomains
- 参数:
-
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 域列表。
- 抛出:
-
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。
-
getMBeanInfo
MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IntrospectionException, ReflectionException, IOException - 参数:
-
name
- 要分析的MBean的名称 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
-
一个
MBeanInfo
实例,允许检索此MBean的所有属性和操作。 - 抛出:
-
IntrospectionException
- 在内省过程中发生异常。 -
InstanceNotFoundException
- 未找到指定的MBean。 -
ReflectionException
- 在尝试调用动态MBean的getMBeanInfo时发生异常。 -
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null。
-
isInstanceOf
boolean isInstanceOf(ObjectName name, String className, Subject delegationSubject) throws InstanceNotFoundException, IOException - 参数:
-
name
- MBean的ObjectName
。 -
className
- 类的名称。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 返回:
- 如果指定的MBean根据上述规则是指定类的实例,则为true,否则为false。
- 抛出:
-
InstanceNotFoundException
- 在MBean服务器中未注册指定的MBean。 -
SecurityException
- 如果客户端或任何委托的主体没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装了一个java.lang.IllegalArgumentException
:参数中的对象名称为null。
-
addNotificationListener
void addNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) throws InstanceNotFoundException, IOException 处理方法MBeanServerConnection.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
。NotificationFilter
参数封装在MarshalledObject
中。Object
(handback)参数也封装在MarshalledObject
中。- 参数:
-
name
- 应添加监听器的MBean的名称。 -
listener
- 处理注册MBean发出的通知的监听器的对象名称。 -
filter
- 封装在MarshalledObject
中的过滤器对象。如果封装在MarshalledObject
中的过滤器具有空值,则在处理通知之前不会执行过滤。 -
handback
- 当发出通知时发送到监听器的上下文,封装在MarshalledObject
中。 -
delegationSubject
- 包含委派主体的Subject
,如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 通知监听器或通知广播器的MBean名称与已注册的任何MBean都不匹配。 -
RuntimeOperationsException
- 包装了一个IllegalArgumentException
。由listener
命名的MBean存在,但未实现NotificationListener
接口,或name
或listener
为null。 -
SecurityException
- 如果客户端或委派的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 - 参见:
-
removeNotificationListener
void removeNotificationListener(ObjectName name, ObjectName listener, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException - 参数:
-
name
- 应移除监听器的MBean的名称。 -
listener
- 要移除的监听器的对象名称。 -
delegationSubject
- 包含委派主体的Subject
,如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 提供的MBean名称与已注册的任何MBean都不匹配。 -
ListenerNotFoundException
- 该监听器未在MBean中注册。 -
SecurityException
- 如果客户端或委派的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装了一个IllegalArgumentException
,当name
或listener
为null时。 - 参见:
-
removeNotificationListener
void removeNotificationListener(ObjectName name, ObjectName listener, MarshalledObject filter, MarshalledObject handback, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException 处理方法MBeanServerConnection.removeNotificationListener(ObjectName, ObjectName, NotificationFilter, Object)
。NotificationFilter
参数封装在MarshalledObject
中。Object
参数也封装在MarshalledObject
中。- 参数:
-
name
- 应移除监听器的MBean的名称。 -
listener
- 先前添加到此MBean的监听器。 -
filter
- 在添加监听器时指定的过滤器,封装在MarshalledObject
中。 -
handback
- 在添加监听器时指定的handback,封装在MarshalledObject
中。 -
delegationSubject
- 包含委派主体的Subject
,如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 提供的MBean名称与已注册的任何MBean都不匹配。 -
ListenerNotFoundException
- 该监听器未在MBean中注册,或者未使用给定的过滤器和handback注册。 -
SecurityException
- 如果客户端或委派的主体(如果有)没有权限执行此操作。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装了一个IllegalArgumentException
,当name
或listener
为null时。 - 参见:
-
addNotificationListeners
Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects) throws InstanceNotFoundException, IOException 注册以接收与给定过滤器匹配的给定MBeans发出的通知。远程客户端随后可以使用
fetchNotifications
方法检索通知。对于每个监听器,原始的
NotificationListener
和handback
保留在客户端端;为了使客户端能够识别它们,服务器生成并返回一个唯一的listenerID
。此listenerID
随Notifications
转发到远程客户端。如果给定的(名称,过滤器)对中的任何一个无法注册,则操作将失败并引发异常,并且不会注册任何名称或过滤器。
- 参数:
-
names
- 标识发出通知的MBeans的ObjectNames
。 -
filters
-NotificationFilters
的序列化表示形式数组。此数组的元素可以为null。 -
delegationSubjects
- 添加监听器的代表Subjects
。此数组的元素可以为null。此外,delegationSubjects
参数本身可以为null,相当于具有与names
和filters
数组大小相同的null值数组。 - 返回:
-
一个标识本地监听器的
listenerIDs
数组。此数组具有与参数相同数量的元素。 - 抛出:
-
IllegalArgumentException
- 如果names
或filters
为null,或者如果names
包含null元素,或者如果三个数组的大小不相同。 -
ClassCastException
- 如果filters
的元素之一解除序列化为非null且不是NotificationFilter
的对象。 -
InstanceNotFoundException
- 如果names
中的一个不对应于任何已注册的MBean。 -
SecurityException
- 如果对于其中一个MBean,客户端或委派的主体(如果有)没有权限添加监听器。 -
IOException
- 如果发生一般通信异常。
-
removeNotificationListeners
void removeNotificationListeners(ObjectName name, Integer[] listenerIDs, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException 处理
removeNotificationListener(ObjectName, NotificationListener)
和removeNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object)
方法。此方法从MBean服务器中的给定MBean中移除一个或多个
NotificationListener
。NotificationListeners
由addNotificationListeners(ObjectName[], MarshalledObject[], Subject[])
方法返回的ID标识。- 参数:
-
name
- 标识发出通知的MBean的ObjectName
。 -
listenerIDs
- 要移除的监听器对应的ID列表。 -
delegationSubject
- 包含委托主体的Subject
,如果使用身份验证主体,则为null
。 - 抛出:
-
InstanceNotFoundException
- 如果给定的name
不对应于任何已注册的MBean。 -
ListenerNotFoundException
- 如果服务器端找不到其中一个监听器。如果MBean丢弃了监听器,而不是调用MBeanServer.removeNotificationListener
,则可能会发生此异常。 -
SecurityException
- 如果客户端或委托的主体(如果有)没有权限移除监听器。 -
IOException
- 如果发生一般通信异常。 -
IllegalArgumentException
- 如果ObjectName
或listenerIds
为null,或者如果listenerIds
包含空元素。
-
fetchNotifications
NotificationResult fetchNotifications(long clientSequenceNumber, int maxNotifications, long timeout) throws IOException 从连接器服务器检索通知。此方法可以阻塞,直到至少有一个通知或达到指定的超时为止。该方法也可以在任何时候返回零个通知。
如果通知的序列号不小于
clientSequenceNumber
,并且此客户端为生成通知的MBean注册了至少一个接受通知的过滤器的监听器,则可以将通知包含在结果中。对于每个对通知感兴趣的监听器,通过addNotificationListeners(ObjectName[], MarshalledObject[], Subject[])
返回的整数ID进行标识。- 参数:
-
clientSequenceNumber
- 客户端感兴趣的第一个序列号。如果为负数,则解释为下一个通知将具有的序列号。 -
maxNotifications
- 要返回的不同通知的最大数量。如果同一通知出现多次,则返回的NotificationResult
中的TargetedNotification
数组可能有多个元素。如果此参数为负数,则行为未指定。 -
timeout
- 等待通知到达的最长时间(以毫秒为单位)。如果没有通知,则可以将其设置为0,表示方法不应等待,而应立即返回。可以将其设置为Long.MAX_VALUE
,表示没有超时。如果此参数为负数,则行为未指定。 - 返回:
-
一个
NotificationResult
。 - 抛出:
-
IOException
- 如果发生一般通信异常。
-