Интерфейс DirStateFactory
- Все суперинтерфейсы:
StateFactory
public interface DirStateFactory extends StateFactory
Фреймворк JNDI позволяет динамически загружать реализации объектов через object factories.
Класс DirStateFactory расширяет StateFactory, позволяя передавать экземпляр Attributes методу getStateToBind() и получать его в результате. Реализации DirStateFactory предназначены для использования поставщиками сервиса DirContext. Когда вызывающий элемент связывает объект с помощью DirContext.bind(), он может также указать набор атрибутов, которые будут связаны с объектом. Объект и атрибуты для привязки передаются методу getStateToBind() фабрики. Если фабрика обрабатывает объект и атрибуты, она возвращает соответствующую пару объекта и атрибутов для привязки. Если фабрика не обрабатывает объект, она должна вернуть null.
Например, вызывающий элемент может связать объект принтера с некоторыми атрибутами, относящимися к принтеру.
ctx.rebind("inky", printer, printerAttrs);
Поставщик сервиса LDAP для ctx использует фабрику DirStateFactory (косвенно через DirectoryManager.getStateToBind()) и передает ей printer и printerAttrs. Фабрика для LDAP-каталога может преобразовать printer в набор атрибутов и объединить его с printerAttrs. Затем поставщик сервиса использует полученные атрибуты для создания записи LDAP и обновляет каталог. Поскольку DirStateFactory расширяет StateFactory, у него есть два метода getStateToBind(), где один отличается от другого аргументом attributes. DirectoryManager.getStateToBind() будет использовать только форму, принимающую аргумент attributes, в то время как NamingManager.getStateToBind() будет использовать только форму, которая не принимает аргумент attributes.
Любая форма метода getStateToBind() DirStateFactory может быть вызвана несколько раз, возможно, с использованием различных параметров. Реализация потокобезопасна.
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static class |
DirStateFactory.Result |
Пара объект/атрибуты для возвращения результата DirStateFactory.getStateToBind(). |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
DirStateFactory.Result |
getStateToBind |
Получает состояние объекта для привязки, учитывая объект и атрибуты, которые должны быть преобразованы. |
Методы, объявленные в интерфейсе javax.naming.spi.StateFactory
getStateToBind
Подробное описание методов
getStateToBind
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs) throws NamingException
DirectoryManager.getStateToBind() последовательно загружает фабрики состояний. Если фабрика реализует DirStateFactory, DirectoryManager вызывает этот метод; в противном случае, он вызывает StateFactory.getStateToBind(). Это продолжается до тех пор, пока фабрика не вернет значение не равное null.
При возникновении исключения в фабрике, исключение передаётся вызывающему методу DirectoryManager.getStateToBind(). Поиск других фабрик, которые могут вернуть значение не равное null, прекращается. Фабрика должна выбрасывать исключение только если она уверена, что она единственная целевая фабрика и что другие фабрики не должны быть опробованы. Если эта фабрика не может создать объект с использованием предоставленных аргументов, она должна вернуть null.
Параметры name и nameCtx могут быть использованы для указания имени создаваемого объекта. Подробности см. в описании «Имя и параметры контекста» в ObjectFactory.getObjectInstance(). Если фабрика использует nameCtx, она должна синхронизировать своё использование против одновременного доступа, так как реализации контекста не гарантируют потокобезопасность.
Параметры name, inAttrs, и environment принадлежат вызывающему элементу. Реализация не будет изменять эти объекты или хранить ссылки на них, хотя она может хранить ссылки на клоны или копии. Объект, возвращённый этим методом, принадлежит вызывающему элементу. Реализация не будет его впоследствии изменять. Он будет содержать либо новый объект Attributes, который также принадлежит вызывающему элементу, либо ссылку на исходный параметр inAttrs.
- Параметры:
-
obj- Возможно null объект, состояние которого должно быть получено. -
name- Имя этого объекта относительноnameCtx, или null, если имя не указано. -
nameCtx- Контекст, относительно которого указан параметрname, или null, еслиnameотносится к контексту по умолчанию. -
environment- Возможно null окружение, которое будет использоваться при создании состояния объекта. -
inAttrs- Возможно null атрибуты, которые будут связаны с объектом. Фабрика не должна изменятьinAttrs. - Возвращает:
- Объект
Result, содержащий состояние объекта для привязки и соответствующие атрибуты для привязки; null, если объект не использует эту фабрику. - Исключения:
-
NamingException- Если эта фабрика столкнулась с исключением при попытке получить состояние объекта, и другие фабрики не должны быть опробованы. - См. также:
© 1993, 2021, 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/17/docs/api/java.naming/javax/naming/spi/DirStateFactory.html