Module java.management
Package javax.management

Class 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.execute的方法调用或handleNotification的方法调用(当没有指定Executor时)抛出一个Error,那么该Error会传播给调用者sendNotification的方法。

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

自 JDK 版本:
1.5
  • Constructor Details

    • NotificationBroadcasterSupport

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

      public NotificationBroadcasterSupport(Executor executor)
      构造一个NotificationBroadcasterSupport,其中每个监听器都使用给定的Executor调用。当调用sendNotification时,如果使用空NotificationFilter添加了监听器,或者如果isNotificationEnabled为要发送的通知返回true,则选择一个监听器。调用NotificationFilter.isNotificationEnabled发生在调用sendNotification的线程中。然后,对于每个选定的监听器,调用executor.execute,并使用调用handleNotification方法的命令。此构造函数等效于NotificationBroadcasterSupport(executor, null)
      参数:
      executor - 一个由方法sendNotification使用的执行程序来发送每个通知。如果为null,则调用sendNotification的线程将自行调用handleNotification方法。
      自 JDK 版本:
      1.6
    • NotificationBroadcasterSupport

      public NotificationBroadcasterSupport(MBeanNotificationInfo... info)

      构造一个NotificationBroadcasterSupport,其中包含可以发送的通知的信息。每个监听器都由发送通知的线程调用。此构造函数等效于NotificationBroadcasterSupport(null, info)

      如果info数组不为空,则构造函数会将其克隆,就像通过info.clone()一样,并且每次调用getNotificationInfo()都会返回一个新的克隆。

      参数:
      info - 一个数组,指示此 MBean 可能发送的每个通知的通知的 Java 类名和通知类型。可以为null,相当于一个空数组。
      自 JDK 版本:
      1.6
    • NotificationBroadcasterSupport

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

      构造一个NotificationBroadcasterSupport,其中包含可以发送的通知的信息,并且每个监听器都使用给定的Executor调用。

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

      如果info数组不为空,则构造函数会将其克隆,就像通过info.clone()一样,并且每次调用getNotificationInfo()都会返回一个新的克隆。

      参数:
      executor - 一个由方法sendNotification使用的执行程序来发送每个通知。如果为null,则调用sendNotification的线程将自行调用handleNotification方法。
      info - 一个数组,指示此 MBean 可能发送的每个通知的通知的 Java 类名和通知类型。可以为null,相当于一个空数组。
      自 JDK 版本:
      1.6
  • Method Details