Module java.management
Package javax.management

Interface NotificationBroadcaster

所有已知的子接口:
ModelMBean, ModelMBeanNotificationBroadcaster, NotificationEmitter
所有已知的实现类:
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