- 所有已知的实现类:
-
CounterMonitor
,GaugeMonitor
,JMXConnectorServer
,MBeanServerDelegate
,Monitor
,NotificationBroadcasterSupport
,RelationService
,RequiredModelMBean
,RMIConnectorServer
,StandardEmitterMBean
,StringMonitor
,Timer
public interface NotificationBroadcaster
由发出通知的MBean实现的接口。它允许将监听器注册为通知监听器。
通知分发
当MBean发出通知时,它会考虑已使用addNotificationListener
添加但尚未使用removeNotificationListener
移除的每个监听器。如果使用该监听器提供了过滤器,并且如果过滤器的isNotificationEnabled
方法返回false,则会忽略该监听器。否则,将调用监听器的handleNotification
方法,传递通知以及提供给addNotificationListener
的handback对象。
如果同一个监听器被添加多次,则将视为添加了多少次。通常,将同一个监听器添加到不同的过滤器或handback对象中是有用的。
该接口的实现可能在调用过滤器和监听器方法的线程方面有所不同。
如果过滤器或监听器的方法调用引发了一个Exception
,那么该异常不应阻止调用其他监听器。但是,如果方法调用引发了一个Error
,则建议在那一点停止处理通知,并且如果可能将Error
传播给通知的发送者,则应该这样做。
新代码应该使用NotificationEmitter
接口。
该接口的实现和NotificationEmitter
应该注意同步。特别是,在调用监听器时不应该持有任何锁。为了处理在分发通知时监听器列表可能发生变化的可能性,一个好的策略是使用CopyOnWriteArrayList
来管理此列表。
- 自:
- 1.5
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addNotificationListener
(NotificationListener listener, NotificationFilter filter, Object handback) 添加监听器到此MBean。返回一个数组,指示此MBean可能发送的每个通知的Java类名称和通知类型。void
从此MBean中移除监听器。
-
Method Details
-
addNotificationListener
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException 添加监听器到此MBean。- 参数:
-
listener
- 处理广播器发出的通知的监听器对象。 -
filter
- 过滤器对象。如果filter为null,则在处理通知之前不会执行任何过滤。 -
handback
- 在发出通知时发送回监听器的不透明对象。此对象不能被通知广播器对象使用。应该将其与通知一起不变地发送回监听器。 - 抛出:
-
IllegalArgumentException
- 监听器参数为null。 - 参见:
-
removeNotificationListener
从此MBean中移除监听器。如果监听器已使用不同的handback对象或通知过滤器注册,则将删除与监听器对应的所有条目。- 参数:
-
listener
- 先前添加到此MBean的监听器。 - 抛出:
-
ListenerNotFoundException
- 该监听器未在MBean中注册。 - 参见:
-
getNotificationInfo
MBeanNotificationInfo[] getNotificationInfo()返回一个数组,指示此MBean可能发送的每个通知的Java类名称和通知类型。
对于MBean发送未在此数组中描述的通知并不违法。但是,MBean服务器的一些客户端可能依赖于该数组的完整性以确保其正确运行。
- 返回:
- 可能通知的数组。
-