Spec-Zone.ru › OpenJDK 21

Пакет 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.
Since:
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, 2023, 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/21/docs/api/java.naming/javax/naming/event/package-summary.html

Spec-Zone.ru

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