JavaTM Platform
Standard Ed. 6

javax.management
类 NotificationBroadcasterSupport

java.lang.Object
  继承者 javax.management.NotificationBroadcasterSupport
所有已实现的接口:
NotificationBroadcaster, NotificationEmitter
直接已知子类:
JMXConnectorServer, Monitor, RelationService, Timer

public class NotificationBroadcasterSupport
extends Object
implements NotificationEmitter

提供 NotificationEmitter 接口的实现。该类可以用作发送通知的 MBean 的超类。

默认情况下,通知调度模型是同步的。也就是说,当某一线程调用 sendNotification 时,将在该线程中调用每个侦听器的 NotificationListener.handleNotification 方法。可以通过重写子类中的 handleNotification 或者通过将 Executor 传递给构造方法来重写此默认值。

如果过滤器或侦听器的方法调用抛出 Exception,则该异常不会阻止调用其他侦听器。不过,如果过滤器、Executor.executehandleNotification 的方法调用(未指定任何 Excecutor 时)抛出 Error,则将该 Error 传播到 sendNotification 的调用者。

通常不会同步调用使用 JMX Remote API 添加的远程侦听器(请参阅 JMXConnector)。也就是说,当 sendNotification 返回时,不保证任何远程侦听器都已经收到通知。

从以下版本开始:
1.5

构造方法摘要
NotificationBroadcasterSupport()
          构造一个 NotificationBroadcasterSupport,其中的每个侦听器都由发送通知的线程调用。
NotificationBroadcasterSupport(Executor executor)
          构造一个 NotificationBroadcasterSupport,其中的每个侦听器都是使用给定 Executor 调用的。
NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
          使用关于可能发送的通知的信息构造一个 NotificationBroadcasterSupport,其中的每个侦听器都是使用给定 Executor 调用的。
NotificationBroadcasterSupport(MBeanNotificationInfo... info)
          使用关于可能发送的通知的信息构造一个 NotificationBroadcasterSupport。
 
方法摘要
 void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          添加一个侦听器。
 MBeanNotificationInfo[] getNotificationInfo()
          返回一个数组,指示此 MBean 可能发送的每个通知的 Java 类名和通知类型。
protected  void handleNotification(NotificationListener listener, Notification notif, Object handback)
          为了向侦听器发送通知,由该侦听器的 sendNotification 调用此方法。
 void removeNotificationListener(NotificationListener listener)
          从此 MBean 移除一个侦听器。
 void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback)
          从此 MBean 移除一个侦听器。
 void sendNotification(Notification notification)
          发送一个通知。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

NotificationBroadcasterSupport

public NotificationBroadcasterSupport()
构造一个 NotificationBroadcasterSupport,其中的每个侦听器都由发送通知的线程调用。此构造方法等效于 NotificationBroadcasterSupport(null, null)


NotificationBroadcasterSupport

public NotificationBroadcasterSupport(Executor executor)
构造一个 NotificationBroadcasterSupport,其中的每个侦听器都是使用给定 Executor 调用的。在调用 sendNotification 时,如果使用 null NotificationFilter 添加了某个侦听器,或者如果 isNotificationEnabled 为正在发送的通知返回 true,则选择该侦听器。对 NotificationFilter.isNotificationEnabled 的调用发生在调用了 sendNotification 的线程中。然后使用调用 handleNotification 方法的命令为每个选定的侦听器调用 executor.execute。此构造方法等效于 NotificationBroadcasterSupport(executor, null)

参数:
executor - 由方法 sendNotification 用来发送每个通知的执行程序。如果该参数为 null,则调用 sendNotification 的线程将调用 handleNotification 方法本身。
从以下版本开始:
1.6

NotificationBroadcasterSupport

public NotificationBroadcasterSupport(MBeanNotificationInfo... info)

使用关于可能发送的通知的信息构造一个 NotificationBroadcasterSupport。每个侦听器都由发送通知的线程调用。此构造方法等效于 NotificationBroadcasterSupport(null, info)

如果 info 数组不为空,则由该构造方法复制它,这类似于使用 info.clone(),并且对 getNotificationInfo() 的每次调用都返回一个新副本。

参数:
info - 一个数组,指示此 MBean 可能发送的每个通知、这些通知的 Java 类的名称和通知类型。该数组可以为 null,它等效于一个空数组。
从以下版本开始:
1.6

NotificationBroadcasterSupport

public NotificationBroadcasterSupport(Executor executor,
                                      MBeanNotificationInfo... info)

使用关于可能发送的通知的信息构造一个 NotificationBroadcasterSupport,其中的每个侦听器都是使用给定 Executor 调用的。

在调用 sendNotification 时,如果使用 null NotificationFilter 添加了某个侦听器,或者如果 isNotificationEnabled 为正在发送的通知返回 true,则选择该侦听器。对 NotificationFilter.isNotificationEnabled 的调用发生在调用了 sendNotification 的线程中。然后使用调用 handleNotification 方法的命令为每个选定的侦听器调用 executor.execute

如果 info 数组不为空,则由该构造方法复制它,这类似于使用 info.clone(),并且对 getNotificationInfo() 的每次调用都返回一个新副本。

参数:
executor - 由方法 sendNotification 用来发送每个通知的执行程序。如果该参数为 null,则调用 sendNotification 的线程将调用 handleNotification 方法本身。
info - 一个数组,指示此 MBean 可能发送的每个通知、这些通知的 Java 类的名称和通知类型。该数组可以为 null,它等效于一个空数组。
从以下版本开始:
1.6
方法详细信息

addNotificationListener

public void addNotificationListener(NotificationListener listener,
                                    NotificationFilter filter,
                                    Object handback)
添加一个侦听器。

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

removeNotificationListener

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

指定者:
接口 NotificationBroadcaster 中的 removeNotificationListener
参数:
listener - 以前添加到此 MBean 中的侦听器。
抛出:
ListenerNotFoundException - 如果没有在 MBean 中注册该侦听器。
另请参见:
NotificationBroadcaster.addNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object), NotificationEmitter.removeNotificationListener(javax.management.NotificationListener, javax.management.NotificationFilter, java.lang.Object)

removeNotificationListener

public void removeNotificationListener(NotificationListener listener,
                                       NotificationFilter filter,
                                       Object handback)
                                throws ListenerNotFoundException
从接口 NotificationEmitter 复制的描述

从此 MBean 移除一个侦听器。该 MBean 必须有一个与给定 listenerfilterhandback 参数完全匹配的侦听器。如果有多个此类侦听器,则只移除一个侦听器。

当且仅当在要移除的侦听器中 filterhandback 参数为 null 时,这两个参数才可以为 null。

指定者:
接口 NotificationEmitter 中的 removeNotificationListener
参数:
listener - 以前添加到此 MBean 中的侦听器。
filter - 添加侦听器时指定的过滤器。
handback - 添加侦听器时指定的回送。
抛出:
ListenerNotFoundException - 如果没有在该 MBean 中注册侦听器,或者没有用给定的过滤器和回送注册它。

getNotificationInfo

public MBeanNotificationInfo[] getNotificationInfo()
从接口 NotificationBroadcaster 复制的描述

返回一个数组,指示此 MBean 可能发送的每个通知的 Java 类名和通知类型。

MBean 发送此数组中未描述的通知是合法的。但是,某些 MBean 服务器的客户端要想正常运行,可能要依赖完整的数组。

指定者:
接口 NotificationBroadcaster 中的 getNotificationInfo
返回:
可能的通知数组。

sendNotification

public void sendNotification(Notification notification)
发送一个通知。如果在构造方法中指定了一个 Executor,则为每个选定的侦听器提供一项任务,以便将通知发送给该侦听器。

参数:
notification - 要发送的通知。

handleNotification

protected void handleNotification(NotificationListener listener,
                                  Notification notif,
                                  Object handback)

为了向侦听器发送通知,由该侦听器的 sendNotification 调用此方法。在子类中可重写此方法,以更改通知传递的行为,例如在一个单独的线程中传递该通知。

此方法的默认实现等效于

listener.handleNotification(notif, handback);
 

参数:
listener - 要接收通知的侦听器。
notif - 传递给侦听器的通知。
handback - 添加侦听器时提供的回调对象。

JavaTM Platform
Standard Ed. 6

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

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