Интерфейс 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 |
Получает состояние объекта для привязки, используя объект и атрибуты, которые необходимо преобразовать. |
Методы, объявленные в интерфейсе StateFactory
getStateToBind | Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
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 можно использовать для указания имени создаваемого объекта. Подробные сведения см. в описании раздела «Параметры 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— если при попытке получить состояние объекта этой фабрикой возникло исключение и другие фабрики не должны проверяться. - См. также:
© 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.