Пакет javax.naming.event
Этот пакет определяет операции оповещения об событиях для Java Naming and Directory Interface (JNDI). JNDI предоставляет приложениям, написанным на языке программирования Java, функциональность именования и каталогов. Он разработан независимо от любой конкретной реализации службы именования или каталогов. Таким образом, к различным службам — новым, появляющимся и уже развернутым — можно получить доступ стандартным способом.
События именования
Этот пакет определяет класс NamingEvent для представления события, генерируемого службой именования/каталогов. Он также определяет подинтерфейсы Context и DirContext, называемые EventContext и EventDirContext, с помощью которых приложения могут зарегистрировать свой интерес к событиям, генерируемым контекстом.
NamingEvent представляет собой событие, которое происходит в службе именования или каталогов. Существует две категории событий именования:
- Те, которые влияют на пространство имен (добавление/удаление/переименование объекта)
- Те, которые влияют на содержимое объектов.
NamespaceChangeListener, ObjectChangeListener. Приложение, например, может зарегистрировать свой интерес к изменениям объектов в контексте следующим образом:
EventContext src =
(EventContext)(new InitialContext()).lookup("o=wiz,c=us");
src.addNamingListener("ou=users", EventContext.ONELEVEL_SCOPE,
new ChangeHandler());
...
class ChangeHandler implements ObjectChangeListener {
public void objectChanged(NamingEvent evt) {
System.out.println(evt.getNewBinding());
}
public void namingExceptionThrown(NamingExceptionEvent evt) {
System.out.println(evt.getException());
}
}
Вопросы потоков
Когда событие отправляется слушателю, метод слушателя (например,objectChanged()) может быть выполнен в потоке, отличном от того, в котором был выполнен вызов addNamingListener(). Выбор потока выполняется поставщиком службы. Когда событие отправляется нескольким слушателям, поставщик службы может выбрать (и обычно рекомендуется) выполнение методов слушателей одновременно в отдельных потоках. Когда экземпляр слушателя вызывает NamingEvent.getEventContext(), он должен учитывать возможность одновременной работы с этим контекстом в других потоках. Аналогично, когда слушатель регистрируется через addNamingListener(), регистрирующий поток должен учитывать вероятность того, что поставщик службы позже вызовет слушателей в вновь созданных потоках. Поскольку экземпляры Context не гарантируют общую потокобезопасность, все операции контекста должны синхронизироваться по мере необходимости.
Обработка исключений
Когда слушатель регистрируется для событий в контексте, контексту может потребоваться выполнить некоторую внутреннюю обработку для сбора информации, необходимой для генерации событий. Например, контекст может потребоваться отправить запрос на сервер, чтобы зарегистрировать интерес к изменениям на сервере, которые в конечном итоге будут преобразованы в события. Если произойдет исключение, которое предотвратит сбор информации о событиях, слушатель никогда не будет уведомлен об этих событиях. При возникновении такого исключения генерируетсяNamingExceptionEvent, чтобы уведомить слушателя. Метод слушателя namingExceptionThrown() вызывается, как показано в примере кода выше, и слушатель автоматически отключается. Спецификация пакета
Спецификация API JNDI и связанные документы можно найти в документации JNDI.- Since:
- 1.3
| Класс | Описание |
|---|---|
| EventContext | Содержит методы для регистрации/дерегистрации слушателей, которые уведомляются о событиях, генерируемых при изменении объектов, именованных в контексте. |
| EventDirContext | Содержит методы для регистрации слушателей, которые уведомляются о событиях, генерируемых при изменении объектов, именованных в контексте каталога. |
| NamespaceChangeListener | Определяет методы, которые должен реализовать слушатель, заинтересованный в изменениях пространства имен. |
| NamingEvent | Этот класс представляет событие, генерируемое службой именования/каталогов. |
| NamingExceptionEvent | Этот класс представляет событие, генерируемое, когда процедуры/процессы, используемые для сбора информации для уведомления слушателей о NamingEvent, выбросили NamingException. |
| NamingListener | Этот интерфейс является корневым для интерфейсов слушателей, обрабатывающих NamingEvent. |
| ObjectChangeListener | Определяет метод, который должен реализовать слушатель NamingEvent с типом события OBJECT_CHANGED. |
© 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.naming/javax/naming/event/package-summary.html