Spec-Zone.ru › OpenJDK 24

Интерфейс LdapContext

Все суперинтерфейсы:
Context, DirContext
Все известные реализующие классы:
InitialLdapContext
public interface LdapContext extends DirContext
Этот интерфейс представляет контекст, в котором можно выполнять операции с управляющими элементами LDAPv3-стиля и выполнять расширенные операции LDAPv3-стиля. Для приложений, которым не требуются такие управляющие элементы или расширенные операции, следует использовать более общий интерфейс javax.naming.directory.DirContext.

Подробности использования управляющих элементов

Этот интерфейс поддерживает управляющие элементы LDAP v3. На высоком уровне эта поддержка позволяет программе-пользователю устанавливать управляющие элементы запроса для операций LDAP, которые выполняются в ходе вызова программы-пользователя Context/DirContext методов, и читать управляющие элементы ответа, полученные в результате операций LDAP. На уровне реализации существуют некоторые детали, которые разработчики как программы-пользователя, так и поставщики услуг должны понимать, чтобы правильно использовать управляющие элементы запроса и ответа.

Управляющие элементы запроса

Существует два типа управляющих элементов запроса:

  • Управляющие элементы запроса, влияющие на создание подключения
  • Управляющие элементы запроса, влияющие на методы контекста
Первый тип используется всякий раз, когда необходимо установить или повторно установить подключение к серверу LDAP. Второй тип используется при отправке всех остальных операций LDAP на сервер LDAP. Причина, по которой необходима такая дифференциация между этими двумя типами управляющих элементов запроса, заключается в том, что JNDI — это API высокого уровня, который не работает напрямую с подключениями. Поставщики услуг отвечают за управление всеми необходимыми подключениями. Следовательно, одно подключение может использоваться несколькими экземплярами контекста, и поставщик услуг свободен использовать собственные алгоритмы для экономии подключений и сетевых ресурсов. Таким образом, при вызове метода в экземпляре контекста поставщик услуг может потребовать выполнить некоторые действия по управлению подключением дополнительно к выполнению соответствующих операций LDAP. Для управления подключениями используется управляющие элементы запроса подключения, а для обычных операций LDAP используется управляющие элементы запроса контекста.

Если не указано иное, термин «управляющие элементы запроса» относится к управляющим элементам запроса контекста.

Управляющие элементы запроса контекста

Существует два способа получения управляющих элементов запроса экземпляром контекста:
  1. ldapContext.newInstance(reqCtls)
  2. ldapContext.setRequestControls(reqCtls)
где ldapContext является экземпляром LdapContext. Указание null или пустого массива для reqCtls означает отсутствие управляющих элементов запроса. newInstance() создает новый экземпляр контекста, используя reqCtls, в то время как setRequestControls() обновляет управляющие элементы запроса существующего экземпляра контекста на reqCtls.

В отличие от свойств среды, управляющие элементы запроса экземпляра контекста не наследуются экземплярами контекста, полученными из него. У экземпляров контекста, полученных из него, есть null как управляющие элементы запроса контекста. Необходимо явно задать управляющие элементы запроса экземпляра контекста, полученного из него, используя setRequestControls().

Управляющие элементы запроса экземпляра контекста извлекаются с помощью метода getRequestControls().

Управляющие элементы запроса подключения

Есть три способа установки управляющих элементов запроса подключения:
  1. new InitialLdapContext(env, connCtls)
  2. refException.getReferralContext(env, connCtls)
  3. ldapContext.reconnect(connCtls);
где refException является экземпляром LdapReferralException, а ldapContext является экземпляром LdapContext. Указание null или пустого массива для connCtls означает отсутствие управляющих элементов запроса подключения.

Как и свойства среды, управляющие элементы запроса подключения контекста наследуются контекстами, полученными из него. Обычно инициализация управляющих элементов запроса подключения выполняется с помощью конструктора InitialLdapContext или LdapReferralContext.getReferralContext(). Эти управляющие элементы запроса подключения наследуются контекстами, которые используют то же самое подключение — то есть контекстами, полученными из исходного или контекстов пересылки.

Измените управляющие элементы запроса подключения контекста с помощью reconnect(). Вызов ldapContext.reconnect() влияет только на подключение, используемое ldapContext, и любые новые экземпляры контекстов, полученные из ldapContext. Контексты, которые ранее использовали подключение с ldapContext, остаются неизменными. То есть управляющие элементы запроса подключения контекста необходимо явно изменять, и они не зависят от изменений управляющих элементов запроса подключения другого контекста.

Управляющие элементы запроса подключения экземпляра контекста извлекаются с помощью метода getConnectControls().

Требования к поставщику услуг

Поставщик услуг поддерживает управляющие элементы запроса подключения и контекста следующим образом. Управляющие элементы запроса контекста должны быть связаны на основе каждого экземпляра контекста, а управляющие элементы запроса подключения — на основе каждого экземпляра подключения. Поставщик услуг должен искать управляющие элементы запроса подключения в свойстве среды «java.naming.ldap.control.connect» и передавать это свойство среды экземплярам контекста, которые он создает.

Управляющие элементы ответа

Метод LdapContext.getResponseControls() используется для извлечения управляющих элементов ответа, сгенерированных операциями LDAP, выполненными в результате вызова операции Context/DirContext. Результатом являются все управляющие элементы ответа, сгенерированные базовыми операциями LDAP, включая любые неявные повторные подключения. Чтобы получить только управляющие элементы ответа повторного подключения, используйте reconnect(), а затем getResponseControls().

Параметры

Массив Control[], переданный в качестве параметра любому методу, принадлежит вызывающей стороне. Поставщик услуг не будет изменять массив или хранить ссылку на него, хотя может хранить ссылки на отдельные объекты Control в массиве. Массив Control[], возвращаемый любым методом, является неизменяемым и не может быть изменен ни вызывающей стороной, ни поставщиком услуг.
С:
1.3
См. также:
  • InitialLdapContext
  • LdapReferralException.getReferralContext(java.util.Hashtable,javax.naming.ldap.Control[])

Краткое описание полей

Модификатор и тип Поле Описание
static final String CONTROL_FACTORIES
Константа, содержащая имя свойства среды для указания списка фабрик управляющих элементов, которые нужно использовать.

Поля, объявленные в интерфейсе javax.naming.Context

AUTHORITATIVE, BATCHSIZE, DNS_URL, INITIAL_CONTEXT_FACTORY, LANGUAGE, OBJECT_FACTORIES, PROVIDER_URL, REFERRAL, SECURITY_AUTHENTICATION, SECURITY_CREDENTIALS, SECURITY_PRINCIPAL, SECURITY_PROTOCOL, STATE_FACTORIES, URL_PKG_PREFIXES

Поля, объявленные в интерфейсе javax.naming.directory.DirContext

ADD_ATTRIBUTE, REMOVE_ATTRIBUTE, REPLACE_ATTRIBUTE

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

Модификатор и тип Метод Описание
ExtendedResponse extendedOperation(ExtendedRequest request)
Выполняет расширенную операцию.
Control[] getConnectControls()
Получает управляющие элементы запроса подключения, действующие для этого контекста.
Control[] getRequestControls()
Получает управляющие элементы запроса, действующие для этого контекста.
Control[] getResponseControls()
Получает управляющие элементы ответа, полученные в результате последнего метода, вызванного в этом контексте.
LdapContext newInstance(Control[] requestControls)
Создает новый экземпляр этого контекста, инициализированный с помощью управляющих элементов запроса.
void reconnect(Control[] connCtls)
Подключается к серверу LDAP с использованием предоставленных управляющих элементов и среды этого контекста.
void setRequestControls(Control[] requestControls)
Устанавливает управляющие элементы запроса для методов, которые будут вызваны в этом контексте впоследствии.

Методы, объявленные в интерфейсе javax.naming.Context

addToEnvironment, bind, bind, close, composeName, composeName, createSubcontext, createSubcontext, destroySubcontext, destroySubcontext, getEnvironment, getNameInNamespace, getNameParser, getNameParser, list, list, listBindings, listBindings, lookup, lookup, lookupLink, lookupLink, rebind, rebind, removeFromEnvironment, rename, rename, unbind, unbind

Методы, объявленные в интерфейсе javax.naming.directory.DirContext

bind, bind, createSubcontext, createSubcontext, getAttributes, getAttributes, getAttributes, getAttributes, getSchema, getSchema, getSchemaClassDefinition, getSchemaClassDefinition, modifyAttributes, modifyAttributes, modifyAttributes, modifyAttributes, rebind, rebind, search, search, search, search, search, search, search, search

Подробное описание полей

CONTROL_FACTORIES

static final String CONTROL_FACTORIES
Константа, хранящая имя свойства среды для указания списка фабрик управления, которые следует использовать. Значение свойства должно быть списком, разделенным двоеточиями, полностью квалифицированных имён классов фабричных классов, которые создадут элемент управления, учитывая другой элемент управления. Подробности см. в ControlFactory.getControlInstance(). Это свойство может быть указано в среде, системном свойстве или в одном или нескольких файлах ресурсов.

Значение этой константы равно "java.naming.factory.control".

См. также:
  • ControlFactory
  • Context.addToEnvironment(java.lang.String, java.lang.Object)
  • Context.removeFromEnvironment(java.lang.String)
  • Значения константных полей

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

extendedOperation

ExtendedResponse extendedOperation(ExtendedRequest request) throws NamingException
Выполняет расширенную операцию. Этот метод используется для поддержки расширенных операций LDAPv3.
Параметры:
request - Запрос, который необходимо выполнить (не null).
Возвращает:
Возможный ответ операции (null). null означает, что операция не сгенерировала никакого ответа.
Исключения:
NamingException - Если при выполнении расширенной операции произошла ошибка.

newInstance

LdapContext newInstance(Control[] requestControls) throws NamingException
Создаёт новый экземпляр контекста, инициализированный с помощью управляющих элементов запроса. Этот метод является удобным методом для создания нового экземпляра этого контекста в целях многопоточного доступа. Например, если несколько потоков хотят использовать различные управляющие элементы запроса контекста, каждый поток может использовать этот метод для получения собственной копии этого контекста и устанавливать/получать управляющие элементы запроса контекста без необходимости синхронизации с другими потоками.

Новый контекст имеет те же свойства среды и управляющие элементы запроса подключения, что и этот контекст. Подробности см. в описании класса. Реализации также могут позволить этому контексту и новому контексту совместно использовать одно и то же сетевое подключение или другие ресурсы, если это не препятствует независимости ни одного из контекстов.

Параметры:
requestControls - Возможно null, управляющие элементы запроса, используемые для нового контекста. Если null, контекст инициализируется без управляющих элементов запроса.
Возвращает:
Не null экземпляр LdapContext.
Исключения:
NamingException - Если при создании нового экземпляра произошла ошибка.
См. также:
  • InitialLdapContext

reconnect

void reconnect(Control[] connCtls) throws NamingException
Подключается к серверу LDAP с использованием предоставленных элементов управления и среды этого контекста.

Этот метод является способом явного инициирования операции "bind" LDAP. Например, вы можете использовать этот метод для установки управляющих элементов запроса для операции "bind" LDAP или для явного подключения к серверу, чтобы получить управляющие элементы ответа, возвращённые операцией "bind" LDAP.

Этот метод устанавливает управляющие элементы запроса подключения этого контекста, чтобы они стали новыми управляющими элементами запроса подключения. Управляющие элементы запроса контекста этого контекста не изменяются. После вызова этого метода любые последующие неявные повторные подключения будут выполняться с использованием connCtls. connCtls также используются в качестве управляющих элементов запроса подключения для новых экземпляров контекста, полученных из этого контекста. Эти управляющие элементы запроса подключения не затрагиваются setRequestControls().

Реализаторы поставщиков услуг должны прочитать раздел "Поставщик услуг" в описании класса для получения подробностей реализации.

Параметры:
connCtls - Возможно null, управляющие элементы. Если null, управляющие элементы не используются.
Исключения:
NamingException - Если во время повторного подключения произошла ошибка.
См. также:
  • getConnectControls()
  • newInstance(javax.naming.ldap.Control[])

getConnectControls

Control[] getConnectControls() throws NamingException
Извлекает управляющие элементы запроса подключения, действующие для этого контекста. Элементы управления принадлежат реализации JNDI и являются неизменяемыми. Массив и управляющие элементы не могут быть изменены вызывающим объектом.
Возвращает:
Возможный массив элементов управления. null означает, что управляющие элементы подключения не были установлены для этого контекста.
Исключения:
NamingException - Если при получении управляющих элементов запроса произошла ошибка.

setRequestControls

void setRequestControls(Control[] requestControls) throws NamingException
Устанавливает управляющие элементы запроса для методов, которые будут позже вызваны в этом контексте. Управляющие элементы запроса принадлежат реализации JNDI и являются неизменяемыми. Массив и управляющие элементы не могут быть изменены вызывающим объектом.

Это удаляет любые предыдущие управляющие элементы запроса и добавляет requestControls для использования последующими методами, вызванными в этом контексте. Этот метод не влияет на управляющие элементы запроса подключения этого контекста.

Обратите внимание, что requestControls будут действовать до следующего вызова setRequestControls(). Вам необходимо явно вызвать setRequestControls() с null или пустым массивом, чтобы очистить элементы управления, если вы не хотите, чтобы они больше влияли на методы контекста. Чтобы проверить, какие управляющие элементы запроса действуют для этого контекста, используйте getRequestControls().

Параметры:
requestControls - Возможно null, управляющие элементы. Если null, управляющие элементы не используются.
Исключения:
NamingException - Если при установке управляющих элементов запроса произошла ошибка.
См. также:
  • getRequestControls()

getRequestControls

Control[] getRequestControls() throws NamingException
Извлекает управляющие элементы запроса, действующие для этого контекста. Управляющие элементы запроса принадлежат реализации JNDI и являются неизменяемыми. Массив и управляющие элементы не могут быть изменены вызывающим объектом.
Возвращает:
Возможный массив элементов управления. null означает, что управляющие элементы запроса не были установлены для этого контекста.
Исключения:
NamingException - Если при получении управляющих элементов запроса произошла ошибка.
См. также:
  • setRequestControls(javax.naming.ldap.Control[])

getResponseControls

Control[] getResponseControls() throws NamingException
Извлекает управляющие элементы ответа, полученные в результате последнего метода, вызванного в этом контексте. Управляющие элементы ответа принадлежат реализации JNDI и являются неизменяемыми. Массив и управляющие элементы не могут быть изменены вызывающим объектом.

Эти управляющие элементы ответа могут быть сгенерированы успешной или неудачной операцией.

При вызове метода контекста, который может вернуть управляющие элементы ответа, управляющие элементы ответа от предыдущего вызова метода очищаются. getResponseControls() возвращает все управляющие элементы ответа, сгенерированные операциями LDAP, используемыми методом контекста, в порядке их получения от сервера LDAP. Вызов getResponseControls() не очищает управляющие элементы ответа. Вы можете вызывать его многократно (и получать те же элементы управления), пока не будет вызван следующий метод контекста, который может вернуть элементы управления.

Возвращает:
Возможный массив элементов управления. Если 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/ldap/LdapContext.html

Spec-Zone.ru

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