Интерфейс StateFactory
- Все известные подинтерфейсы:
DirStateFactory
public interface StateFactory
Фреймворк JNDI позволяет динамически загружать реализации объектов через объектные фабрики. Например, при поиске принтера, привязанного в именованном пространстве, если служба печати связывает имена принтеров с Reference, принтер Reference может использоваться для создания объекта принтера, чтобы вызывающий метод lookup мог непосредственно работать с объектом принтера после выполнения поиска.
ObjectFactory отвечает за создание объектов определенного типа. В приведенном выше примере может быть PrinterObjectFactory для создания объектов Printer.
Для обратного процесса, когда объект привязывается к пространству имен, JNDI предоставляет фабрики состояний. Продолжая пример с принтером, предположим, что объект принтера обновлен и повторно привязан:
ctx.rebind("inky", printer);
Предоставщик услуг для ctx использует фабрику состояний для получения состояния printer для привязки к своему пространству имен. Фабрика состояний для объекта типа Printer может возвращать более компактный объект для хранения в системе именования. Фабрика состояний должна реализовывать интерфейс StateFactory. Кроме того, класс фабрики должен быть public и иметь public конструктор без параметров. Обратите внимание, что в тех случаях, когда фабрика находится в именованном модуле, она должна находиться в пакете, который экспортируется этим модулем в модуль java.naming.
Метод getStateToBind() фабрики состояний может вызываться многократно, возможно, с использованием различных параметров. Реализация потокобезопасна.
StateFactory предназначен для использования с поставщиками услуг, которые реализуют только интерфейс Context. DirStateFactory предназначен для использования с поставщиками услуг, которые реализуют интерфейс DirContext.
- С:
- 1.3
- См. также:
Краткое описание методов
Подробное описание методов
getStateToBind
Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment) throws NamingException
NamingManager.getStateToBind() последовательно загружает фабрики состояний и вызывает этот метод на них, пока один не вернёт значение, отличное от null. DirectoryManager.getStateToBind() последовательно загружает фабрики состояний. Если фабрика реализует интерфейс DirStateFactory, то DirectoryManager вызывает DirStateFactory.getStateToBind(); в противном случае он вызывает StateFactory.getStateToBind().
Когда фабрика выбрасывает исключение, исключение передаётся вызывающему методу NamingManager.getStateToBind() и DirectoryManager.getStateToBind(). Поиск других фабрик, которые могут вернуть значение, отличное от null, прекращается. Фабрика должна выбрасывать исключение только в том случае, если она уверена, что является единственной целевой фабрикой и что другие фабрики не должны быть проверены. Если эта фабрика не может создать объект, используя предоставленные аргументы, она должна вернуть null.
Параметры name и nameCtx могут быть использованы для указания имени создаваемого объекта. См. описание "Имена и параметры контекста" в ObjectFactory.getObjectInstance() для получения подробностей. Если фабрика использует nameCtx, она должна синхронизировать своё использование с учётом одновременного доступа, так как реализации контекста не гарантируются как потокобезопасные.
Параметры name и environment принадлежат вызывающему методу. Реализация не будет изменять эти объекты или хранить ссылки на них, хотя может хранить ссылки на клоны или копии.
- Параметры:
-
obj- Непустой объект, состояние которого необходимо получить. -
name- Имя этого объекта относительноnameCtx, или null, если имя не указано. -
nameCtx- Контекст относительно которого задан параметрname, или null, еслиnameотносится к контексту по умолчанию. -
environment- Возможно, нулевая среда, которая будет использована при создании состояния объекта. - Возвращает:
- Состояние объекта для привязки; null, если фабрика не возвращает никаких изменений.
- Исключение:
-
NamingException- если эта фабрика столкнулась с исключением при попытке получить состояние объекта, и другие фабрики не будут проверены. - См. также:
© 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/spi/StateFactory.html