Интерфейс 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
- См. также:
-
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.naming/javax/naming/spi/StateFactory.html