Spec-Zone.ru › OpenJDK 8

Интерфейс StateFactory

Все известные подинтерфейсы:
DirStateFactory

public interface StateFactory

Данный интерфейс представляет собой фабрику для получения состояния объекта для связывания.

Фреймворк JNDI позволяет динамически загружать реализации объектов через объектные фабрики. Например, при поиске принтера, связанного в пространстве имён, если служба печати связывает имена принтеров с References, то принтер Reference может быть использован для создания объекта принтера, так что вызывающий метод lookup может напрямую работать с объектом принтера после поиска.

ObjectFactory отвечает за создание объектов определённого типа. В приведённом выше примере может быть PrinterObjectFactory для создания Printer объектов.

Для обратного процесса, когда объект связывается в пространство имён, JNDI предоставляет фабрики состояния. Продолжая пример с принтером, предположим, что объект принтера обновлён и пересвязан:

ctx.rebind("inky", printer);
Поставщик услуг для ctx использует фабрику состояния для получения состояния printer для связывания в его пространство имён. Фабрика состояния для объекта типа Printer может возвращать более компактный объект для хранения в системе имён.

Фабрика состояния должна реализовывать интерфейс StateFactory. Кроме того, класс фабрики должен быть публичным и должен иметь публичный конструктор, не принимающий параметров.

Метод getStateToBind() фабрики состояния может вызываться многократно, возможно, с использованием различных параметров. Реализация потокобезопасна.

StateFactory предназначен для использования с поставщиками услуг, реализующими только интерфейс Context. DirStateFactory предназначен для использования с поставщиками услуг, реализующими интерфейс DirContext.

С момента:
1.3
См. также:
NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>), DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes), ObjectFactory, DirStateFactory

Методы

Модификатор и тип Метод и описание
Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)

Получает состояние объекта для связывания.

Методы

getStateToBind

Object getStateToBind(Object obj,
                      Name name,
                      Context nameCtx,
                      Hashtable<?,?> environment)
               throws NamingException

Получает состояние объекта для связывания.

NamingManager.getStateToBind() последовательно загружает фабрики состояния и вызывает этот метод на них, пока один не вернёт ненулевое значение. DirectoryManager.getStateToBind() последовательно загружает фабрики состояния. Если фабрика реализует DirStateFactory, то DirectoryManager вызывает DirStateFactory.getStateToBind(); в противном случае вызывает StateFactory.getStateToBind().

При возникновении исключения в фабрике, исключение передаётся вызывающему методу NamingManager.getStateToBind() и DirectoryManager.getStateToBind(). Поиск других фабрик, которые могут вернуть ненулевое значение, прекращается. Фабрика должна выбрасывать исключение только в том случае, если она уверена, что она единственная целевая фабрика и что не следует пробовать другие фабрики. Если эта фабрика не может создать объект с использованием предоставленных аргументов, она должна вернуть null.

Параметры name и nameCtx могут быть необязательно использованы для указания имени создаваемого объекта. Смотрите описание "Имя и параметры контекста" в ObjectFactory.getObjectInstance() для деталей. Если фабрика использует nameCtx, она должна синхронизировать своё использование против одновременного доступа, так как реализации контекста не гарантируют потокобезопасность.

Параметры name и environment принадлежат вызывающему методу. Реализация не будет изменять эти объекты или сохранять ссылки на них, хотя может сохранять ссылки на клоны или копии.

Параметры:
obj - Не нулевой объект, состояние которого необходимо получить.
name - Имя этого объекта относительно nameCtx, или null, если имя не указано.
nameCtx - Контекст относительно которого указан параметр name, или null, если name относится к контексту по умолчанию.
environment - Возможно null окружение, используемое при создании состояния объекта.
Возвращает:
Состояние объекта для связывания; null, если фабрика не возвращает изменений.
Исключения:
NamingException - если эта фабрика столкнулась с исключением при попытке получить состояние объекта, и другие фабрики не должны пробоваться.
См. также:
NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>), DirectoryManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable<?, ?>, javax.naming.directory.Attributes)

© 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.

Spec-Zone.ru

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