- java.lang.Object
-
- javax.management.NotificationBroadcasterSupport
-
- All Implemented Interfaces:
-
NotificationBroadcaster
,NotificationEmitter
- 已知直接子类:
-
JMXConnectorServer
,Monitor
,RelationService
,Timer
public class NotificationBroadcasterSupport extends Object implements NotificationEmitter
提供
NotificationEmitter
接口的实现。 这可以用作发送通知的MBean的超类。默认情况下,通知调度模型是同步的。 也就是说,当线程调用sendNotification时,每个侦听器的
NotificationListener.handleNotification
方法在该线程中被调用。 您可以通过在子类中覆盖handleNotification
来覆盖此默认值,也可以将Executor传递给构造函数。如果过滤器或监听器的方法调用引发了一个
异常
,则该异常并不阻止其他侦听器被调用。 但是,如果过滤器或Executor.execute
或handleNotification
(当未指定Excecutor
)的方法调用将抛出一个Error
,那么该Error
将传播给呼叫者sendNotification
。使用JMX Remote API添加的远程侦听器(见JMXConnector)通常不会同步调用。 也就是说,当sendNotification返回时,不能保证任何远程侦听器尚未收到通知。
- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 Constructor 描述 NotificationBroadcasterSupport()
构造一个NotificationBroadcasterSupport,其中每个侦听器被发送通知的线程调用。NotificationBroadcasterSupport(Executor executor)
NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
NotificationBroadcasterSupport(MBeanNotificationInfo... info)
构建一个NotificationBroadcasterSupport,其中包含可能发送的通知的信息。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 void
addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个监听器。MBeanNotificationInfo[]
getNotificationInfo()
返回一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。protected void
handleNotification(NotificationListener listener, Notification notif, Object handback)
为每个侦听器调用此方法由sendNotification
发送通知给该侦听器。void
removeNotificationListener(NotificationListener listener)
从这个MBean中删除一个监听器。void
removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
从这个MBean中删除一个监听器。void
sendNotification(Notification notification)
发送通知。
-
-
-
构造方法详细信息
-
NotificationBroadcasterSupport
public NotificationBroadcasterSupport()
构造一个NotificationBroadcasterSupport,其中每个侦听器被发送通知的线程调用。 此构造函数相当于NotificationBroadcasterSupport(null, null)
。
-
NotificationBroadcasterSupport
public NotificationBroadcasterSupport(Executor executor)
构造一个NotificationBroadcasterSupport,其中使用给定的Executor
调用每个侦听器 。 当sendNotification
被调用时,选择了一个监听器,如果它是用空加NotificationFilter
,或者如果isNotificationEnabled
的通知返回true发送。 对NotificationFilter.isNotificationEnabled
的调用发生在调用sendNotification
的线程中。 然后,对于每个所选择的监听器,executor.execute
被调用,调用一个命令handleNotification
方法。 该构造函数相当于NotificationBroadcasterSupport(executor, null)
。- 参数
-
executor
- 方法sendNotification
用于发送每个通知的执行器。 如果为null,则调用sendNotification
的线程将自动调用handleNotification
方法。 - 从以下版本开始:
- 1.6
-
NotificationBroadcasterSupport
public NotificationBroadcasterSupport(MBeanNotificationInfo... info)
构建一个NotificationBroadcasterSupport,其中包含可能发送的通知的信息。 发送通知的线程调用每个侦听器。 此构造函数相当于
NotificationBroadcasterSupport(null, info)
。如果
info
数组不为空,则由构造函数克隆,如同通过info.clone()
,每次调用getNotificationInfo()
返回一个新的克隆。- 参数
-
info
- 一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。 可以为空,这相当于一个空数组。 - 从以下版本开始:
- 1.6
-
NotificationBroadcasterSupport
public NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
构造一个NotificationBroadcasterSupport,其中包含有关可能发送的通知的信息,以及使用给定的
Executor
调用每个侦听器的信息 。当
sendNotification
被调用时,选择了一个监听器,如果它是用空加NotificationFilter
,或者如果isNotificationEnabled
的通知返回true发送。 调用NotificationFilter.isNotificationEnabled
发生在调用sendNotification
的线程中。 然后,对于每个所选择的监听器,executor.execute
被调用,调用一个命令handleNotification
方法。如果
info
数组不为空,则由构造函数克隆,如同info.clone()
,每次调用getNotificationInfo()
返回一个新的克隆。- 参数
-
executor
- 方法sendNotification
用于发送每个通知的执行者。 如果为null,则调用sendNotification
的线程将自动调用handleNotification
方法。 -
info
- 一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。 可以为空,这相当于一个空数组。 - 从以下版本开始:
- 1.6
-
-
方法详细信息
-
addNotificationListener
public void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
添加一个监听器。- Specified by:
-
addNotificationListener
在接口NotificationBroadcaster
- 参数
-
listener
- 接收通知的侦听器。 -
filter
- 过滤器对象。 如果过滤器为空,则在处理通知之前不会执行过滤。 -
handback
- 发出通知时要发送回侦听器的不透明对象。 该通知广播对象无法使用此对象。 通知发送者应该重新发送更改。 - 异常
-
IllegalArgumentException
- 如果监听器为空,则抛出。 - 另请参见:
-
removeNotificationListener(javax.management.NotificationListener)
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
说明从界面NotificationBroadcaster
复制从这个MBean中删除一个监听器。 如果侦听器已经注册了不同的回传对象或通知过滤器,则与侦听器对应的所有条目都将被删除。- Specified by:
-
removeNotificationListener
在接口NotificationBroadcaster
- 参数
-
listener
- 以前添加到此MBean的侦听器。 - 异常
-
ListenerNotFoundException
- 监听器未注册到MBean。 - 另请参见:
-
NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
,NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
-
removeNotificationListener
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
说明从接口NotificationEmitter
复制从这个MBean中删除一个监听器。 该MBean必须有一个与给定匹配的侦听
listener
,filter
,并handback
参数。 如果有多个这样的听众,只有一个被删除。filter
和handback
参数可能为null,当且仅当在要删除的侦听器中为null时。- Specified by:
-
removeNotificationListener
在接口NotificationEmitter
- 参数
-
listener
- 以前添加到此MBean的侦听器。 -
filter
- 添加侦听器时指定的过滤器。 -
handback
- 添加侦听器时指定的handback
。 - 异常
-
ListenerNotFoundException
- 侦听器未注册到MBean,或者没有向给定的过滤器和回传注册。
-
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
描述从接口NotificationBroadcaster
复制返回一个数组,指示MBean可能发送的每个通知,通知的Java类的名称和通知类型。
MBean发送不在此阵列中描述的通知并不是非法的。 但是,MBean服务器的某些客户端可能依赖于正确运行的阵列。
- Specified by:
-
getNotificationInfo
在接口NotificationBroadcaster
- 结果
- 可能通知的数组。
-
sendNotification
public void sendNotification(Notification notification)
发送通知。 如果在构造函数中指定了一个Executor
,则每个选定的侦听器将为其提供一个任务,以将通知传递给该侦听器。- 参数
-
notification
- 发送通知。
-
handleNotification
protected void handleNotification(NotificationListener listener, Notification notif, Object handback)
为每个侦听器调用此方法为
sendNotification
,以便向该侦听器发送通知。 在子类中可以覆盖它,以更改通知传递的行为,例如在单独的线程中传递通知。此方法的默认实现方式相当于
listener.handleNotification(notif, handback);
- 参数
-
listener
- 正在传送通知的收听者。 -
notif
- 通知正在传送给听众。 -
handback
- the handback object that was supplied when the listener was added.
-
-