- 所有超级接口:
-
NotificationBroadcaster
- 所有已知实现类:
-
CounterMonitor
,GaugeMonitor
,JMXConnectorServer
,MBeanServerDelegate
,Monitor
,NotificationBroadcasterSupport
,RelationService
,RequiredModelMBean
,RMIConnectorServer
,StandardEmitterMBean
,StringMonitor
,Timer
由发出通知的MBean实现的接口。它允许将监听器注册到MBean作为通知监听器。
通知分发
当MBean发出通知时,它会考虑已使用addNotificationListener
添加但尚未使用removeNotificationListener
移除的每个监听器。如果使用该监听器提供了过滤器,并且如果过滤器的isNotificationEnabled
方法返回false,则会忽略该监听器。否则,将使用通知调用监听器的handleNotification
方法,以及提供给addNotificationListener
的handback对象。
如果同一个监听器被添加多次,则将视为添加了多少次。通常,使用不同的过滤器或handback对象添加相同的监听器非常有用。
关于调用过滤器和监听器方法的线程,此接口的实现可能有所不同。
如果过滤器或监听器的方法调用引发了一个Exception
,那么该异常不应阻止调用其他监听器。但是,如果方法调用引发了一个Error
,则建议在那一点停止通知的处理,并且如果可能将Error
传播给通知的发送者,则应该这样做。
应该优先使用此接口,而不是NotificationBroadcaster
接口。
此接口的实现和NotificationBroadcaster
应该注意同步。特别是,在调用监听器时不建议实现持有任何锁。为了处理在分派通知时监听器列表可能发生更改的可能性,一个好的策略是使用CopyOnWriteArrayList
来管理此列表。
- 自 JDK 版本:
- 1.5
-
Method Summary
Modifier and TypeMethodDescriptionvoid
removeNotificationListener
(NotificationListener listener, NotificationFilter filter, Object handback) 从此 MBean 中移除监听器。Methods declared in interface javax.management.NotificationBroadcaster
addNotificationListener, getNotificationInfo, removeNotificationListener
-
Method Details
-
removeNotificationListener
void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException 从此 MBean 中移除监听器。MBean 必须具有与给定的
listener
、filter
和handback
参数完全匹配的监听器。如果存在多个这样的监听器,则只会移除一个。如果
filter
和handback
参数为null,则仅当要移除的监听器中它们为null时才能为null。- 参数:
-
listener
- 先前添加到此 MBean 的监听器。 -
filter
- 添加监听器时指定的过滤器。 -
handback
- 添加监听器时指定的handback。 - 抛出:
-
ListenerNotFoundException
- 未向 MBean 注册监听器,或者未使用给定的过滤器和handback注册监听器。
-