Класс 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 (если не указан Excecutor) вызывает Error, то это Error будет передано вызывающему методу sendNotification.
Удаленные слушатели, добавленные с помощью JMX Remote API (см. JMXConnector), обычно не вызываются синхронно. То есть, когда sendNotification возвращает управление, нет гарантии, что все удаленные слушатели уже получили уведомление.
- С тех пор как:
- 1.5
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
NotificationBroadcasterSupport() |
Создаёт NotificationBroadcasterSupport, где каждый слушатель вызывается потоком, отправляющим уведомление. |
NotificationBroadcasterSupport |
Создаёт NotificationBroadcasterSupport, где каждый слушатель вызывается с помощью переданного Executor. |
NotificationBroadcasterSupport |
Создаёт NotificationBroadcasterSupport с информацией об уведомлениях, которые могут быть отправлены, и где каждый слушатель вызывается с помощью переданного Executor. |
NotificationBroadcasterSupport |
Создаёт NotificationBroadcasterSupport с информацией об уведомлениях, которые могут быть отправлены. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addNotificationListener |
Добавляет слушателя. |
MBeanNotificationInfo[] |
getNotificationInfo() |
Возвращает массив, указывающий для каждого уведомления, которое может отправить этот MBean, имя Java-класса уведомления и тип уведомления. |
protected void |
handleNotification |
Этот метод вызывается sendNotification для каждого слушателя, чтобы отправить уведомление этому слушателю. |
void |
removeNotificationListener |
Удаляет слушателя из этого MBean. |
void |
removeNotificationListener |
Удаляет слушателя из этого MBean. |
void |
sendNotification |
Отправляет уведомление. |
Подробное описание конструкторов
NotificationBroadcasterSupport
public NotificationBroadcasterSupport()
NotificationBroadcasterSupport(null, null).NotificationBroadcasterSupport
public NotificationBroadcasterSupport(Executor executor)
Executor. При вызове sendNotification, слушатель выбирается, если он был добавлен с null 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(), и каждый вызов getNotificationInfo() возвращает новый клон.
- Параметры:
-
info- массив, указывающий для каждого уведомления, которое этот MBean может отправить, имя Java-класса уведомления и тип уведомления. Может быть null, что эквивалентно пустому массиву. - С тех пор:
- 1.6
NotificationBroadcasterSupport
public NotificationBroadcasterSupport(Executor executor, MBeanNotificationInfo... info)
Создаёт NotificationBroadcasterSupport с информацией об уведомлениях, которые могут быть отправлены, и где каждый слушатель вызывается с помощью заданного Executor.
При вызове sendNotification, слушатель выбирается, если он был добавлен с null NotificationFilter, или если isNotificationEnabled возвращает true для отправляемого уведомления. Вызов NotificationFilter.isNotificationEnabled происходит в потоке, который вызвал sendNotification. Затем для каждого выбранного слушателя вызывается executor.execute с командой, которая вызывает метод handleNotification.
Если массив 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)
- Определено:
-
addNotificationListenerв интерфейсеNotificationBroadcaster - Параметры:
-
listener- Слушатель для получения уведомлений. -
filter- Объект фильтра. Если filter null, фильтрация не будет выполняться перед обработкой уведомлений. -
handback- Непрозрачный объект, который будет возвращен слушателю при отправке уведомления. Этот объект не может быть использован объектом-распространителем уведомлений. Он должен быть отправлен без изменений с уведомлением слушателю. - Исключения:
-
IllegalArgumentException- выброшено, если listener null. - См. также:
removeNotificationListener
public void removeNotificationListener(NotificationListener listener) throws ListenerNotFoundException
NotificationBroadcaster- Определено:
-
removeNotificationListenerв интерфейсеNotificationBroadcaster - Параметры:
-
listener- Слушатель, который ранее был добавлен к этому MBean. - Исключения:
-
ListenerNotFoundException- Слушатель не зарегистрирован в MBean. - См. также:
removeNotificationListener
public void removeNotificationListener(NotificationListener listener, NotificationFilter filter, Object handback) throws ListenerNotFoundException
NotificationEmitterУдаляет слушателя из этого MBean. У MBean должен быть слушатель, который точно соответствует данным listener, filter, и handback параметрам. Если таких слушателей несколько, удаляется только один.
Параметры filter и handback могут быть null, если и только если они null в удаляемом слушателе.
- Определено:
-
removeNotificationListenerв интерфейсеNotificationEmitter - Параметры:
-
listener- Слушатель, который ранее был добавлен к этому MBean. -
filter- Фильтр, который был указан при добавлении слушателя. -
handback- Объект обратной связи, который был указан при добавлении слушателя. - Исключения:
-
ListenerNotFoundException- Слушатель не зарегистрирован в MBean или он не зарегистрирован с заданным фильтром и объектом обратной связи.
getNotificationInfo
public MBeanNotificationInfo[] getNotificationInfo()
NotificationBroadcasterВозвращает массив, указывающий для каждого уведомления, которое этот MBean может отправить, имя Java-класса уведомления и тип уведомления.
Не является ошибкой, если MBean отправляет уведомления, не описанные в этом массиве. Однако некоторые клиенты сервера MBean могут полагаться на то, что массив является полным для их корректной работы.
- Определено:
-
getNotificationInfoв интерфейсеNotificationBroadcaster - Возвращает:
- массив возможных уведомлений.
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- объект обратной связи, который был предоставлен при добавлении слушателя.
© 1993, 2021, 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/17/docs/api/java.management/javax/management/NotificationBroadcasterSupport.html