Spec-Zone.ru › OpenJDK 25

Интерфейс StateFactory

Все известные подинтерфейсы:
DirStateFactory
public interface StateFactory
Этот интерфейс представляет собой фабрику для получения состояния объекта, предназначенного для связывания.

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

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

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

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

Фабрика состояний должна реализовывать интерфейс StateFactory. Кроме того, класс фабрики должен быть открытым и иметь открытый конструктор без параметров. Обратите внимание: если фабрика находится в именованном модуле, она должна находиться в пакете, экспортируемом этим модулем в модуль java.naming.

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

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

С момента выпуска:
1.3
См. также:
  • NamingManager.getStateToBind(Object, Name, Context, Hashtable)
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, 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(Object, Name, Context, Hashtable)
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/spi/StateFactory.html

Spec-Zone.ru

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