- 所有已知的子接口:
ModelMBean
,ModelMBeanNotificationBroadcaster
,NotificationEmitter
- 所有已知的实现类:
CounterMonitor
,GaugeMonitor
,JMXConnectorServer
,MBeanServerDelegate
,Monitor
,NotificationBroadcasterSupport
,RelationService
,RequiredModelMBean
,RMIConnectorServer
,StandardEmitterMBean
,StringMonitor
,Timer
public interface NotificationBroadcaster
由发出通知的 MBean 实现的接口。它允许监听器作为通知监听器向 MBean 注册。
通知派发
当 MBean 发出通知时,它会考虑已使用 addNotificationListener
添加但随后未使用 removeNotificationListener
删除的每个监听器。如果为该监听器提供了过滤器,并且如果过滤器的 isNotificationEnabled
方法返回 false,则忽略该监听器。否则,将调用监听器的 handleNotification
方法以及通知以及提供给 addNotificationListener
的交回对象。
如果多次添加同一个监听,则认为它的添加次数与添加的次数一样多。添加具有不同过滤器或 handback 对象的相同监听通常很有用。
此接口的实现可能因调用过滤器和监听方法的线程而异。
如果过滤器或监听器的方法调用抛出 Exception
,则该异常不应阻止调用其他监听器。但是,如果方法调用抛出 Error
,则建议在该点停止处理通知,如果可以将 Error
传播给通知的发送者,则应该这样做。
新代码应改为使用 NotificationEmitter
接口。
此接口和 NotificationEmitter
的实现应注意同步。特别是,实现在调用监听器时持有任何锁不是一个好主意。为了处理在发送通知时监听器列表可能发生变化的可能性,一个好的策略是对该列表使用 CopyOnWriteArrayList
。
- 自从:
- 1.5
-
方法总结
修饰符和类型方法描述void
addNotificationListener
(NotificationListener listener, NotificationFilter filter, Object handback) 向此 MBean 添加一个监听。返回一个数组,指示对于此 MBean 可能发送的每个通知,通知的 Java 类的名称和通知类型。void
从此 MBean 中移除监听。
-
方法详情
-
addNotificationListener
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException 向此 MBean 添加一个监听。- 参数:
listener
- 将处理广播者发出的通知的监听器对象。filter
- 过滤器对象。如果 filter 为 null,则在处理通知之前不会执行任何过滤。handback
- 发出通知时要发送回监听器的不透明对象。通知广播对象不能使用该对象。它应该与通知收听者的通知一起重新发送。- 抛出:
IllegalArgumentException
- 监听器参数为空。- 参见:
-
removeNotificationListener
从此 MBean 中移除监听。如果监听已注册到不同的交接对象或通知过滤器,则该监听对应的所有条目将被删除。- 参数:
listener
- 先前添加到此 MBean 的监听器。- 抛出:
ListenerNotFoundException
- 监听器未在 MBean 中注册。- 参见:
-
getNotificationInfo
MBeanNotificationInfo [] getNotificationInfo()返回一个数组,指示对于此 MBean 可能发送的每个通知,通知的 Java 类的名称和通知类型。
MBean 发送此数组中未描述的通知并不是非法的。但是,MBean 服务的某些客户端可能依赖于完整的数组才能正常运行。
- 返回:
- 可能通知的数组。
-