Интерфейс 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, 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/DirStateFactory.html