Пакет javax.naming.event
Предоставляет поддержку уведомлений об событиях при доступе к службам именования и каталогов.
См.: Описание
| Интерфейс | Описание |
|---|---|
| EventContext | Содержит методы для регистрации/дерегистрации слушателей, которые будут уведомлены об событиях, возникающих при изменении объектов, именованных в контексте. |
| EventDirContext | Содержит методы для регистрации слушателей, которые будут уведомлены об событиях, возникающих при изменении объектов, именованных в контексте каталога. |
| NamespaceChangeListener | Определяет методы, которые должен реализовать слушатель, заинтересованный в изменениях в пространстве имён. |
| NamingListener | Этот интерфейс является корневым для интерфейсов слушателей, обрабатывающих |
| ObjectChangeListener | Определяет метод, который должен реализовать слушатель |
| Класс | Описание |
|---|---|
| NamingEvent | Этот класс представляет событие, сгенерированное службой именования/каталога. |
| NamingExceptionEvent | Этот класс представляет событие, сгенерированное при возникновении |
Описание пакета javax.naming.event
Предоставляет поддержку уведомлений об событиях при доступе к службам именования и каталогов.
Этот пакет определяет операции уведомления об событиях Java Naming and Directory InterfaceTM (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(), как показано в примере кода выше, и слушатель автоматически дерегистрируется.
- С момента:
- 1.3
© 1993, 2020, 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.