-
- All Superinterfaces:
-
AutoCloseable
,Closeable
,Remote
- 所有已知实现类:
-
RMIConnectionImpl
,RMIConnectionImpl_Stub
public interface RMIConnection extends Closeable, Remote
RMI对象用于将MBeanServer请求从客户端转发到服务器端的MBeanServer实现。 对于连接到RMI连接器的每个远程客户端,都有一个Remote对象实现此接口。
用户代码通常不会引用此接口。 它被指定为公共API的一部分,以便该API的不同实现可以互操作。
为了确保客户端参数将在服务器端使用正确的类加载器进行反序列化,客户端参数(如用于调用方法的参数)将包含在
MarshalledObject
中 。 此接口的实现必须首先为操作及其目标获取适当的类加载器,然后使用此类加载器对编组参数进行反序列化。 除非另有说明,否则参数MarshalledObject
或MarshalledObject[]
不能为空; 如果是,则行为未指定。类加载方面在JMX Specification, version 1.4中有详细说明
此接口中的大多数方法都是
MBeanServerConnection
接口中的并行方法。 此处未指定方法行为的一个方面,它与相应的MBeanServerConnection
方法中的相同。- 从以下版本开始:
- 1.5
-
-
方法摘要
-
-
-
方法详细信息
-
getConnectionId
String getConnectionId() throws IOException
返回连接ID。 对于给定RMI连接器服务器的每个打开连接,此字符串都不同。
- 结果
- 连接ID
- 异常
-
IOException
- 如果发生一般通信异常。 - 另请参见:
-
RMIConnector.connect
-
close
void close() throws IOException
关闭此连接。 从此方法返回时,实现此接口的RMI对象未导出,因此对其的进一步远程调用将失败。
- Specified by:
-
close
在界面AutoCloseable
- Specified by:
-
close
在界面Closeable
- 异常
-
IOException
- 如果无法关闭连接,或者无法导出远程对象,或者在传输远程关闭请求时发生通信故障。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, IOException
- 参数
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。 可能为空。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
ObjectInstance
,包含ObjectName
和新实例化的MBean的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
。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
createMBean
ObjectInstance createMBean(String className, ObjectName name, ObjectName loaderName, Subject delegationSubject) throws ReflectionException, InstanceAlreadyExistsException, MBeanRegistrationException, MBeanException, NotCompliantMBeanException, InstanceNotFoundException, IOException
- 参数
-
className
- 要实例化的MBean的类名。 -
name
- MBean的对象名称。 可能为空。 -
loaderName
- 要使用的类加载器的对象名。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
ObjectInstance
,包含ObjectName
和新实例化的MBean的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
。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
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的对象名称。 可能为空。 -
params
- 包含要调用的构造函数的参数的数组,封装在MarshalledObject
。 封装的数组可以为null,相当于一个空数组。 -
signature
- 包含要调用的构造函数的签名的数组。 可以为null,相当于一个空数组。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
ObjectInstance
,包含ObjectName
和新实例化的MBean的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
。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
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的对象名称。 可能为空。 -
loaderName
- 要使用的类加载器的对象名称。 -
params
- 包含要调用的构造函数的参数的数组,封装在MarshalledObject
。 封装的数组可以为null,相当于一个空数组。 -
signature
- 包含要调用的构造函数的签名的数组。 可以为null,相当于一个空数组。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
ObjectInstance
,包含ObjectName
和新实例化的MBean的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
。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
unregisterMBean
void unregisterMBean(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, MBeanRegistrationException, IOException
- 参数
-
name
- 要取消注册的MBean的对象名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
MBeanRegistrationException
- MBean的preDeregister((MBeanRegistration
接口)方法引发了异常。 -
RuntimeOperationsException
- 包装java.lang.IllegalArgumentException
:参数中的对象名称为null,或者尝试取消注册时的MBean是MBeanServerDelegate
MBean。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
getObjectInstance
ObjectInstance getObjectInstance(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IOException
- 参数
-
name
- MBean的对象名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
ObjectInstance
与名称指定的MBean关联。 包含的ObjectName
是name
,包含的类名是
。getMBeanInfo(name)
.getClassName() - 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
RuntimeOperationsException
- 包装ajava.lang.IllegalArgumentException
:参数中的对象名称为null。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
queryMBeans
Set<ObjectInstance> queryMBeans(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException
处理方法MBeanServerConnection.queryMBeans(ObjectName, QueryExp)
。QueryExp
包装在MarshalledObject
。- 参数
-
name
- 标识要检索的MBean的对象名称模式。 如果指定null或没有指定域和键属性,则将检索所有注册的MBean。 -
query
- 要应用于选择MBean的查询表达式,封装在MarshalledObject
。 如果MarshalledObject
封装了空值,则不会应用查询表达式来选择MBean。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
包含所选MBean的
ObjectInstance
对象的集合。 如果没有MBean满足查询,则返回空列表。 - 异常
-
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
queryNames
Set<ObjectName> queryNames(ObjectName name, MarshalledObject query, Subject delegationSubject) throws IOException
处理方法MBeanServerConnection.queryNames(ObjectName, QueryExp)
。QueryExp
包装在MarshalledObject
。- 参数
-
name
- 标识要检索的MBean名称的对象名称模式。 如果指定null或不指定域和键属性,则将检索所有已注册MBean的名称。 -
query
- 要应用于选择MBean的查询表达式,封装在MarshalledObject
。 如果MarshalledObject
封装了空值,则不会应用查询表达式来选择MBean。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 包含所选MBean的ObjectName的集合。 如果没有MBean满足查询,则返回空列表。
- 异常
-
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
isRegistered
boolean isRegistered(ObjectName name, Subject delegationSubject) throws IOException
- 参数
-
name
- 要检查的MBean的对象名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 如果MBean已在MBean服务器中注册,则为True,否则为false。
- 异常
-
RuntimeOperationsException
- 包装java.lang.IllegalArgumentException
:参数中的对象名称为null。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
getMBeanCount
Integer getMBeanCount(Subject delegationSubject) throws IOException
- 参数
-
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 注册的MBean数量。
- 异常
-
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
getAttribute
Object getAttribute(ObjectName name, String attribute, Subject delegationSubject) throws MBeanException, AttributeNotFoundException, InstanceNotFoundException, ReflectionException, IOException
- 参数
-
name
- 要从中检索属性的MBean的对象名称。 -
attribute
- 一个String,指定要检索的属性的名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 检索到的属性的值。
- 异常
-
AttributeNotFoundException
- MBean中无法访问指定的属性。 -
MBeanException
- 包装MBean的getter抛出的异常。 -
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用getter时抛出java.lang.Exception
。 -
RuntimeOperationsException
- 包装java.lang.IllegalArgumentException
:参数中的对象名为null或参数中的属性为null。 -
RuntimeMBeanException
- 包装MBean的getter抛出的运行时异常。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 - 另请参见:
-
setAttribute(javax.management.ObjectName, java.rmi.MarshalledObject, javax.security.auth.Subject)
-
getAttributes
AttributeList getAttributes(ObjectName name, String[] attributes, Subject delegationSubject) throws InstanceNotFoundException, ReflectionException, IOException
- 参数
-
name
- 从中检索属性的MBean的对象名称。 -
attributes
- 要检索的属性列表。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 检索到的属性列表。
- 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用Dynamic MBean的getAttributes方法时发生异常。 -
RuntimeOperationsException
- 换行java.lang.IllegalArgumentException
:参数中的对象名为null或参数中的属性为null。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 - 另请参见:
-
setAttributes(javax.management.ObjectName, java.rmi.MarshalledObject, javax.security.auth.Subject)
-
setAttribute
void setAttribute(ObjectName name, MarshalledObject attribute, Subject delegationSubject) throws InstanceNotFoundException, AttributeNotFoundException, InvalidAttributeValueException, MBeanException, ReflectionException, IOException
处理方法MBeanServerConnection.setAttribute(ObjectName, Attribute)
。Attribute
参数包含在MarshalledObject
。- 参数
-
name
- 要在其中设置属性的MBean的名称。 -
attribute
- 要设置的属性的标识及其要设置的值,封装在MarshalledObject
。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
AttributeNotFoundException
- MBean中无法访问指定的属性。 -
InvalidAttributeValueException
- 为该属性指定的值无效。 -
MBeanException
- 包装MBean的setter抛出的异常。 -
ReflectionException
- 尝试调用setter时,将引发java.lang.Exception
。 -
RuntimeOperationsException
- 包装java.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 - 另请参见:
-
getAttribute(javax.management.ObjectName, java.lang.String, javax.security.auth.Subject)
-
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
包含委托principal或null
如果认证主要来代替。 - 结果
- 已设置的属性列表及其新值。
- 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
ReflectionException
- 尝试调用Dynamic MBean的getAttributes方法时发生异常。 -
RuntimeOperationsException
- 包装ajava.lang.IllegalArgumentException
:参数中的对象名称为null或参数中的属性为null。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 - 另请参见:
-
getAttributes(javax.management.ObjectName, java.lang.String[], javax.security.auth.Subject)
-
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
包含委托principal或null
如果认证主要来代替。 - 结果
- 操作返回的对象,表示在指定的MBean上调用操作的结果。
- 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
MBeanException
- 包装MBean调用的方法抛出的异常。 -
ReflectionException
- 尝试调用方法时抛出java.lang.Exception
。 -
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
-包装一个IllegalArgumentException
时name
或operationName
为空。
-
getDefaultDomain
String getDefaultDomain(Subject delegationSubject) throws IOException
- 参数
-
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 默认域。
- 异常
-
SecurityException
- 如果客户端或委派的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
getDomains
String[] getDomains(Subject delegationSubject) throws IOException
- 参数
-
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 域名列表。
- 异常
-
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。
-
getMBeanInfo
MBeanInfo getMBeanInfo(ObjectName name, Subject delegationSubject) throws InstanceNotFoundException, IntrospectionException, ReflectionException, IOException
- 参数
-
name
- 要分析的MBean的名称 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
-
允许检索此MBean的所有属性和操作的
MBeanInfo
实例。 - 异常
-
IntrospectionException
- 内省期间发生异常。 -
InstanceNotFoundException
- 找不到指定的MBean。 -
ReflectionException
- 尝试调用Dynamic MBean的getMBeanInfo时发生异常。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
- 包装ajava.lang.IllegalArgumentException
:参数中的对象名称为null。
-
isInstanceOf
boolean isInstanceOf(ObjectName name, String className, Subject delegationSubject) throws InstanceNotFoundException, IOException
- 参数
-
name
- MBean的ObjectName
。 -
className
- 类的名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 结果
- 如果根据上述规则指定的MBean是指定类的实例,则返回true,否则返回false。
- 异常
-
InstanceNotFoundException
- 指定的MBean未在MBean服务器中注册。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
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
中的过滤MarshalledObject
值,则在处理通知之前不会执行任何过滤。 -
handback
- 发出通知时要发送到侦听器的上下文,封装到MarshalledObject
。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 通知侦听器或通知广播器的MBean名称与任何已注册的MBean都不匹配。 -
RuntimeOperationsException
- 包装IllegalArgumentException
。 由listener
命名的MBean存在但未实现NotificationListener
接口,或name
或listener
为空。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 - 另请参见:
-
removeNotificationListener(ObjectName, ObjectName, Subject)
,removeNotificationListener(ObjectName, ObjectName, MarshalledObject, MarshalledObject, Subject)
-
removeNotificationListener
void removeNotificationListener(ObjectName name, ObjectName listener, Subject delegationSubject) throws InstanceNotFoundException, ListenerNotFoundException, IOException
- 参数
-
name
- 应删除侦听器的MBean的名称。 -
listener
- 要删除的侦听器的对象名称。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 提供的MBean名称与任何已注册的MBean都不匹配。 -
ListenerNotFoundException
- 侦听器未在MBean中注册。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
-包装一个IllegalArgumentException
时name
或listener
为空。 - 另请参见:
-
addNotificationListener(javax.management.ObjectName, javax.management.ObjectName, java.rmi.MarshalledObject, java.rmi.MarshalledObject, javax.security.auth.Subject)
-
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
- 添加侦听器时指定的MarshalledObject
,封装到MarshalledObject
。 -
delegationSubject
-该Subject
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 提供的MBean名称与任何已注册的MBean都不匹配。 -
ListenerNotFoundException
- 侦听器未在MBean中注册,或者未在给定的过滤器和回送中注册。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有执行此操作的权限。 -
IOException
- 如果发生一般通信异常。 -
RuntimeOperationsException
-包装一个IllegalArgumentException
时name
或listener
为空。 - 另请参见:
-
addNotificationListener(javax.management.ObjectName, javax.management.ObjectName, java.rmi.MarshalledObject, java.rmi.MarshalledObject, javax.security.auth.Subject)
-
addNotificationListeners
Integer[] addNotificationListeners(ObjectName[] names, MarshalledObject[] filters, Subject[] delegationSubjects) throws InstanceNotFoundException, IOException
注册来自给定MBean的与给定过滤器匹配的通知。 随后,远程客户端可以使用
fetchNotifications
方法检索通知。对于每个听众,原始的
NotificationListener
和handback
保留在客户端; 为了使客户端能够识别它们,服务器生成并返回唯一的listenerID
。 此listenerID
与Notifications
一起转发到远程客户端。如果无法注册给定(名称,过滤器)对中的任何一个,则操作将失败并发生异常,并且不会注册任何名称或过滤器。
- 参数
-
names
- 标识发出通知的MBean的ObjectNames
。 -
filters
-所述的编组表示的阵列NotificationFilters
。 此数组的元素可以为null。 -
delegationSubjects
- 代表正在添加侦听器的Subjects
。 此数组的元素可以为null。 此外,delegationSubjects
参数本身可以为null,这相当于与names
和filters
数组大小相同的空值数组。 - 结果
-
标识本地侦听器的数组
listenerIDs
。 该数组与参数具有相同数量的元素。 - 异常
-
IllegalArgumentException
- 如果names
或filters
为空,或者如果names
包含null元素,或者三个数组的大小都不相同。 -
ClassCastException
-如果所述元件中的一个filters
作为一个非空的对象,该对象是不是一个解组NotificationFilter
。 -
InstanceNotFoundException
- 如果其中一个names
与任何已注册的MBean不对应。 -
SecurityException
- 如果,对于其中一个MBean,客户端或委派的Subject(如果有),则无权添加侦听器。 -
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
包含委托principal或null
如果认证主要来代替。 - 异常
-
InstanceNotFoundException
- 如果给定的name
与任何已注册的MBean不对应。 -
ListenerNotFoundException
- 如果在服务器端找不到其中一个侦听器。 如果MBean由于某种原因而不是调用MBeanServer.removeNotificationListener
丢弃了侦听器,则会发生此异常。 -
SecurityException
- 如果客户端或委托的Subject(如果有)没有删除侦听器的权限。 -
IOException
- 如果发生一般通信异常。 -
IllegalArgumentException
- 如果ObjectName
或listenerIds
为null或listenerIds
包含null元素。
-
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
以表示没有超时。 如果此参数为负,则不指定行为。 - 结果
-
A
NotificationResult
。 - 异常
-
IOException
- 如果发生一般通信异常。
-
-