Интерфейс NotificationBroadcaster
- Все известные подинтерфейсы:
-
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 с уведомлением и объектом handback, который был предоставлен addNotificationListener.
Если один и тот же слушатель добавляется более одного раза, он учитывается столько раз, сколько раз он был добавлен. Зачастую полезно добавить одного и того же слушателя с разными фильтрами или объектами handback.
Реализации этого интерфейса могут отличаться по потоку, в котором вызываются методы фильтров и слушателей.
Если вызов метода фильтра или слушателя вызывает Exception, то эта исключительная ситуация не должна препятствовать вызову других слушателей. Однако, если вызов метода вызывает Error, то рекомендуется прекратить обработку уведомления на этом этапе, и, если возможно, передать Error отправителю уведомления.
Новый код должен использовать интерфейс NotificationEmitter вместо этого.
Реализации этого интерфейса и NotificationEmitter должны быть внимательными к синхронизации. В частности, не следует держать блокировки во время вызова слушателя. Для обработки возможности изменения списка слушателей во время отправки уведомления, хорошей стратегией является использование CopyOnWriteArrayList для этого списка.
- С:
- 1.5
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addNotificationListener |
Добавляет слушателя к этому MBean. |
MBeanNotificationInfo[] |
getNotificationInfo() |
Возвращает массив, указывающий для каждого уведомления, которое может отправить этот MBean, имя Java-класса уведомления и тип уведомления. |
void |
removeNotificationListener |
Удаляет слушателя из этого MBean. |
Подробное описание методов
addNotificationListener
void addNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws IllegalArgumentException
- Параметры:
-
listener- Объект слушателя, который будет обрабатывать уведомления, отправляемые брокером. -
filter- Объект фильтра. Если filter равен null, фильтрация не будет выполняться перед обработкой уведомлений. -
handback- Непрозрачный объект, который будет отправлен обратно слушателю при отправке уведомления. Этот объект не может быть использован объектом брокера уведомлений. Он должен быть отправлен без изменений вместе с уведомлением слушателю. - Исключения:
-
IllegalArgumentException- Параметр Listener равен null. - См. также:
removeNotificationListener
void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
- Параметры:
-
listener- Слушатель, который был ранее добавлен в этот MBean. - Исключения:
-
ListenerNotFoundException- Слушатель не зарегистрирован в MBean. - См. также:
getNotificationInfo
MBeanNotificationInfo[] getNotificationInfo()
Возвращает массив, указывающий для каждого уведомления, которое может отправить этот MBean, имя Java-класса уведомления и тип уведомления.
Не является ошибкой, если MBean отправляет уведомления, не описанные в этом массиве. Однако некоторые клиенты сервера MBean могут полагаться на полноту массива для их корректной работы.
- Возвращает:
- массив возможных уведомлений.
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.management/javax/management/NotificationBroadcaster.html