模块  java.management
软件包  javax.management

Class NotificationBroadcasterSupport

  • 实现的所有接口
    NotificationBroadcasterNotificationEmitter
    已知直接子类:
    JMXConnectorServerMonitorRelationServiceTimer

    public class NotificationBroadcasterSupportextends Objectimplements NotificationEmitter

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

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

    如果过滤器或侦听器的方法调用抛出异常 ,则该异常不会阻止调用其他侦听器。 然而,如果或过滤器的方法调用Executor.executehandleNotification (无时Excecutor指定)抛出Error ,则该Error被传播到的呼叫者sendNotification

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

    从以下版本开始:
    1.5
    • 构造方法详细信息

      • 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方法本身。
        从以下版本开始:
        1.6
      • NotificationBroadcasterSupport

        public NotificationBroadcasterSupport​(MBeanNotificationInfo... info)

        使用有关可能发送的通知的信息构造NotificationBroadcasterSupport。 每个侦听器都由发送通知的线程调用。 此构造函数相当于NotificationBroadcasterSupport(null, info)

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

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

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

        构造一个NotificationBroadcasterSupport,其中包含有关可能发送的通知的信息,以及使用给定的Executor调用每个侦听器的位置

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

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

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

      • 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 - 添加侦听器时提供的handback对象。