Spec-Zone.ru › OpenJDK 24

Пакет javax.naming.event

package 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.
С момента:
1.3
Пакет Описание
javax.naming
Предоставляет классы и интерфейсы для доступа к службам именования.
javax.naming.directory
Расширяет пакет javax.naming, чтобы предоставить функциональность доступа к службам каталогов.
javax.naming.ldap
Предоставляет поддержку расширенных операций и управляющих элементов LDAPv3.
javax.naming.spi
Предоставляет средства для динамической подгрузки поддержки доступа к службам именования и каталогов через пакеты javax.naming и связанные.
Класс Описание
EventContext
Содержит методы для регистрации/отмены регистрации слушателей, которые будут уведомляться о событиях, возникающих при изменении объектов, именованных в контексте.
EventDirContext
Содержит методы для регистрации слушателей, которые будут уведомляться о событиях, возникающих при изменении объектов, именованных в контексте каталога.
NamespaceChangeListener
Указывает методы, которые должен реализовать слушатель, заинтересованный в изменениях пространства имен.
NamingEvent
Этот класс представляет событие, генерируемое службой именования/каталога.
NamingExceptionEvent
Этот класс представляет событие, генерируемое при возникновении исключения NamingException при сборе информации для уведомления слушателей о событиях NamingEvent.
NamingListener
Этот интерфейс является корневым интерфейсом для слушателей, обрабатывающих события NamingEvent.
ObjectChangeListener
Указывает метод, который должен реализовать слушатель события NamingEvent с типом события OBJECT_CHANGED.

© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.naming/javax/naming/event/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API