Spec-Zone.ru › OpenJDK 17

Интерфейс 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

APPLET, 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, контекст инициализируется без управляющих элементов запроса.
Возвращает:
Экземпляр LdapContext (не null).
Выбрасывает:
NamingException - Если произошла ошибка при создании нового экземпляра.
См. также:
  • InitialLdapContext

reconnect

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

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

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

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

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

getConnectControls

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

getResponseControls

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

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

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

Возвращает:
Возможный массив управляющих элементов (null). Если null, предыдущий вызов метода на этом контексте не сгенерировал управляющие элементы.
Выбрасывает:
NamingException - Если произошла ошибка при получении управляющих элементов ответа.

© 1993, 2021, 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/17/docs/api/java.naming/javax/naming/ldap/LdapContext.html

Spec-Zone.ru

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