Spec-Zone.ru › OpenJDK 27

Интерфейс 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
См. также:
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)
  • DirObjectFactory

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
static class  DirStateFactory.Result
Пара объекта и атрибутов для возврата результата вызова DirStateFactory.getStateToBind().

Краткое описание методов

Модификатор и тип Метод Описание
DirStateFactory.Result getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment, Attributes inAttrs)
Получает состояние объекта для привязки, используя объект и атрибуты, которые необходимо преобразовать.

Методы, объявленные в интерфейсе StateFactory

getStateToBind
Модификатор и тип Метод Описание
Object getStateToBind(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)
Получает состояние объекта для привязки.

Подробное описание методов

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 можно использовать для указания имени создаваемого объекта. Подробные сведения см. в описании раздела «Параметры Name и Context» в 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 — если при попытке получить состояние объекта этой фабрикой возникло исключение и другие фабрики не должны проверяться.
См. также:
  • DirectoryManager.getStateToBind(Object, Name, Context, Hashtable, Attributes)

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API