JavaTM 2 Platform
Standard Ed. 6

javax.management
接口 NotificationBroadcaster

所有已知子接口:
ModelMBean, ModelMBeanNotificationBroadcaster, NotificationEmitter
所有已知实现类:
CounterMonitor, GaugeMonitor, JMXConnectorServer, MBeanServerDelegate, Monitor, NotificationBroadcasterSupport, RelationService, RequiredModelMBean, RMIConnectorServer, StandardEmitterMBean, StringMonitor, Timer

public interface NotificationBroadcaster

由发出 Notifications 的 MBean 实现的接口。它允许某个侦听器在该 MBean 中注册为通知侦听器。

通知调度

MBean 发出通知时,它会考虑每个已经使用 addNotificationListener 添加、且之后没有使用 removeNotificationListener 移除的侦听器。如果该侦听器同时提供一个过滤器,且过滤器的 isNotificationEnabled 方法返回 false,则忽略该侦听器。否则,将利用通知调用侦听器的 handleNotification 方法,同时向 addNotificationListener 提供 handback 对象。

如果多次添加同一个侦听器,则认为该侦听器被添加的次数等于实际被添加的次数。在添加相同的侦听器的同时使用不同的过滤器或 handback 对象常常很有用。

根据调用过滤器和侦听器方法的线程,此接口的实现可能有所不同。

如果过滤器或侦听器的方法调用抛出 Exception,则该异常不应该阻止调用其他侦听器。但是,如果方法调用抛出 Error,则建议在此处停止对通知的处理,如果 Error 可以传播到通知的发送方,则更应该这样做。

新的代码应该使用 NotificationEmitter 接口。

应该注意保持此接口的实现与 NotificationEmitter 的实现之间同步。需要特别指出的是,让某个实现在调用侦听器时持有锁不是一个好主意。侦听器列表在调度通知时可能发生更改,处理这种可能性的一个好的策略是对列表使用 CopyOnWriteArrayList

从以下版本开始:
1.5

方法摘要
 void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          在此 MBean 中添加一个侦听器。
 MBeanNotificationInfo[] getNotificationInfo()
          返回一个数组,指示此 MBean 可能发送的每个通知的 Java 类名和通知类型。
 void removeNotificationListener(NotificationListener listener)
          从此 MBean 移除一个侦听器。
 

方法详细信息

addNotificationListener

void addNotificationListener(NotificationListener listener,
                             NotificationFilter filter,
                             Object handback)
                             throws IllegalArgumentException
在此 MBean 中添加一个侦听器。

参数:
listener - 将处理广播者发出的通知的侦听器对象。
filter - 过滤器对象。如果 filter 为 null,则处理通知前不执行过滤。
handback - 发出通知时要发送回侦听器的不透明对象。Notification 广播者对象不能使用此对象。应该将通知不作更改地重新发送到侦听器。
抛出:
IllegalArgumentException - 如果 Listener 参数为 null。
另请参见:
removeNotificationListener(javax.management.NotificationListener)

removeNotificationListener

void removeNotificationListener(NotificationListener listener)
                                throws ListenerNotFoundException
从此 MBean 移除一个侦听器。如果已向不同的 handback 对象或通知过滤器注册了该侦听器,则移除与该侦听器有关的所有项。

参数:
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 服务器的客户端要想正常运行,可能要依赖完整的数组。

返回:
可能的通知数组。

JavaTM 2 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策