Spec-Zone.ru › OpenJDK 25

Пакет 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.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/event/package-summary.html

Spec-Zone.ru

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