public interface NotificationEmitter extends NotificationBroadcaster
由发出通知的MBean实现的接口。 它允许监听器作为通知监听器注册到MBean。
当MBean发出的通知,则认为已被添加与每个听者addNotificationListener
和随后不移除removeNotificationListener
。 如果为该监听器提供过滤器,并且如果过滤器的isNotificationEnabled
方法返回false,则忽略监听器。 否则,通过通知调用侦听器的handleNotification
方法,以及提供给addNotificationListener
对象。
如果同一个监听器被多次添加,它被认为是添加的次数。 通过不同的过滤器或回传对象添加相同的监听器通常很有用。
关于调用过滤器和侦听器的方法的线程,此接口的实现可能会有所不同。
如果过滤器或侦听器的方法调用抛出异常
,则该异常不应阻止其他侦听器被调用。 但是,如果方法调用抛出一个Error
,那么建议在该点处理通知停止,如果可以将Error Error
给通知的发件人,那么应该这样做。
该接口应该被新的代码使用,优先于NotificationBroadcaster
接口。
该接口和NotificationBroadcaster
应该小心同步。 特别地,实现该方法在调用监听器时保持任何锁定并不是一个好主意。 要处理在发送通知时听众列表可能发生更改的可能性,一个好的策略是使用CopyOnWriteArrayList
作为此列表。
Modifier and Type | Method and Description |
---|---|
void |
removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
从这个MBean中删除一个监听器。
|
addNotificationListener, getNotificationInfo, removeNotificationListener
void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
从这个MBean中删除一个监听器。 该MBean必须有一个与给定匹配的侦听listener
, filter
和handback
参数。 如果有多个这样的听众,只有一个被删除。
filter
和handback
参数可能为null,当且仅当它们在要删除的侦听器中为空时。
listener
- 以前添加到此MBean的侦听器。
filter
- 添加侦听器时指定的过滤器。
handback
- 添加侦听器时指定的回传。
ListenerNotFoundException
- 监听器未注册到MBean,或者没有向给定的过滤器和回传注册。