-
- All Known Subinterfaces:
-
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对象。如果多次添加相同的侦听器,则会将其视为添加的次数。 使用不同的过滤器或回送对象添加相同的侦听器通常很有用。
关于调用过滤器和侦听器的方法的线程,此接口的实现可能不同。
如果过滤器或侦听器的方法调用抛出
异常,则该异常不应阻止调用其他侦听器。 但是,如果方法调用抛出Error,则建议在该点停止处理通知,如果可以将Error传播给通知的发送方,则应该这样做。新代码应该使用
NotificationEmitter接口。此接口和
NotificationEmitter应该注意同步。 特别是,实现在调用侦听器时保持任何锁定并不是一个好主意。 为了处理在发送通知时侦听器列表可能发生更改的可能性,一个好的策略是使用CopyOnWriteArrayList作为此列表。- 从以下版本开始:
- 1.5
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 voidaddNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)向此MBean添加侦听器。MBeanNotificationInfo[]getNotificationInfo()返回一个数组,指示此MBean可能发送的每个通知,通知的Java类的名称和通知类型。voidremoveNotificationListener(NotificationListener listener)从此MBean中删除侦听器。
-
-
-
方法详细信息
-
addNotificationListener
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException
向此MBean添加侦听器。- 参数
-
listener- 将处理广播公司发出的通知的侦听器对象。 -
filter- 过滤器对象。 如果filter为null,则在处理通知之前不会执行任何过滤。 -
handback- 发出通知时要发送回侦听器的不透明对象。 Notification广播器对象不能使用此对象。 通知听众应该保持不变。 - 异常
-
IllegalArgumentException- 侦听器参数为null。 - 另请参见:
-
removeNotificationListener(javax.management.NotificationListener)
-
removeNotificationListener
void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
从此MBean中删除侦听器。 如果侦听器已使用不同的回送对象或通知过滤器进行了注册,则将删除与侦听器对应的所有条目。- 参数
-
listener- 先前已添加到此MBean的侦听器。 - 异常
-
ListenerNotFoundException- 侦听器未向MBean注册。 - 另请参见:
-
addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object),NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)
-
getNotificationInfo
MBeanNotificationInfo[] getNotificationInfo()
返回一个数组,指示此MBean可能发送的每个通知,通知的Java类的名称和通知类型。
MBean发送此数组中未描述的通知并非违法。 但是,MBean服务器的某些客户端可能依赖于正确运行的阵列。
- 结果
- the array of possible notifications.
-
-