Интерфейс 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 может вызываться несколько раз, возможно, с различными параметрами. Реализация потокобезопасна.
- С момента:
- 1.3
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
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(). Это выполняется до тех пор, пока фабрика не вернёт ненулевое значение.
При возникновении исключения в фабрике, исключение передается вызывающей стороне метода DirectoryManager.getStateToBind(). Поиск других фабрик, которые могут вернуть ненулевое значение, прекращается. Фабрика должна выбрасывать исключение только в том случае, если она уверена, что является единственной целевой фабрикой и что другие фабрики не должны проверяться. Если эта фабрика не может создать объект, используя предоставленные аргументы, она должна вернуть null.
Параметры name и nameCtx могут по желанию использоваться для указания имени создаваемого объекта. См. описание параметров «Имя и контекст» в ObjectFactory.getObjectInstance() для получения подробностей. Если фабрика использует nameCtx, она должна синхронизировать свой доступ против одновременного доступа, так как реализации контекста не гарантируют потокобезопасность.
Параметры name, inAttrs, и environment принадлежат вызывающей стороне. Реализация не будет изменять эти объекты или хранить ссылки на них, хотя она может хранить ссылки на клоны или копии. Объект, возвращаемый этим методом, принадлежит вызывающей стороне. Реализация не будет в дальнейшем его изменять. Он будет содержать либо новый объект Attributes, который также принадлежит вызывающей стороне, или ссылку на исходный параметр inAttrs.
- Параметры:
-
obj- Возможно нулевой объект, состояние которого необходимо получить. -
name- Имя этого объекта относительноnameCtx, или null, если имя не указано. -
nameCtx- Контекст относительно которого задаётся параметрname, или null, еслиnameотноситься к контексту по умолчанию. -
environment- Возможно нулевая среда, используемая при создании состояния объекта. -
inAttrs- Возможно нулевые атрибуты, которые нужно связать с объектом. Фабрика не должна изменятьinAttrs. - Возвращает:
- Объект
Resultсодержащий состояние объекта для связывания и соответствующие атрибуты для связывания; null, если объект не использует эту фабрику. - Исключения:
-
NamingException- Если эта фабрика столкнулась с исключением при попытке получить состояние объекта, и другие фабрики не должны проверяться. - См. также:
© 1993, 2023, 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/21/docs/api/java.naming/javax/naming/spi/DirStateFactory.html