Интерфейс LdapContext
- Все суперинтерфейсы:
-
Context,DirContext
- Все известные реализующие классы:
InitialLdapContext
public interface LdapContext extends DirContext
Этот интерфейс представляет контекст, в котором можно выполнять операции с управлениями LDAPv3-стиля и выполнять расширенные операции LDAPv3-стиля. Для приложений, которым не нужны такие управления или расширенные операции, следует использовать более общий интерфейс javax.naming.directory.DirContext.
Подробности использования управлений
Этот интерфейс предоставляет поддержку управлений LDAP v3. В общем случае эта поддержка позволяет программе-пользователю устанавливать управления запроса для операций LDAP, которые выполняются в ходе вызова методамиContext/DirContext программы-пользователя, и читать управления ответа, полученные в результате операций LDAP. На уровне реализации существуют некоторые детали, которые должны понимать разработчики как программы-пользователя, так и поставщики услуг, для корректного использования управлений запроса и ответа. Управления запроса
Существует два типа управлений запроса:
- Управления запроса, влияющие на создание соединения
- Управления запроса, влияющие на методы контекста
Если не указано иное, термин «управления запроса» относится к управлениям запроса контекста.
Управления запроса контекста
Существует два способа, которыми экземпляр контекста получает управления запроса:-
ldapContext.newInstance(reqCtls) -
ldapContext.setRequestControls(reqCtls)
ldapContext — экземпляр LdapContext. Указание null или пустого массива для reqCtls означает отсутствие управлений запроса. newInstance() создает новый экземпляр контекста, используя reqCtls, а setRequestControls() обновляет управления запросом существующего экземпляра контекста на reqCtls. В отличие от свойств среды, управления запроса экземпляра контекста не наследуются экземплярами контекста, которые производятся из него. Производные экземпляры контекста имеют null в качестве управлений запроса контекста. Вы должны явно установить управления запроса производного экземпляра контекста, используя setRequestControls().
Управления запроса экземпляра контекста извлекаются с помощью метода getRequestControls().
Управления запроса соединения
Существует три способа установки управлений запроса соединения:-
new InitialLdapContext(env, connCtls) -
refException.getReferralContext(env, connCtls) -
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 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".
Методы
extendedOperation
ExtendedResponse extendedOperation(ExtendedRequest request)
throws NamingException Выполняет расширенную операцию. Этот метод используется для поддержки расширенных операций LDAPv3.
- Параметры:
-
request- Запрос, который необходимо выполнить (не может быть null). - Возвращает:
- Возможный ответ операции (null). null означает, что операция не сгенерировала никакого ответа.
- Исключения:
-
NamingException- Если при выполнении расширенной операции произошла ошибка.
newInstance
LdapContext newInstance(Control[] requestControls)
throws NamingException Создаёт новый экземпляр этого контекста, инициализированного с помощью управляющих элементов запроса. Этот метод является удобным методом для создания нового экземпляра этого контекста в целях многопоточного доступа. Например, если несколько потоков хотят использовать разные управляющие элементы запроса контекста, каждый поток может использовать этот метод для получения собственной копии этого контекста и установки/получения управляющих элементов запроса контекста без необходимости синхронизации с другими потоками.
Новый контекст имеет те же свойства среды и управляющие элементы запроса соединения, что и этот контекст. Подробности см. в описании класса. Реализации также могут позволить этому контексту и новому контексту совместно использовать одно и то же сетевое соединение или другие ресурсы, если это не препятствует независимости ни одного контекста.
- Параметры:
-
requestControls- Возможно нулевые управляющие элементы запроса для использования в новом контексте. Если null, контекст инициализируется без управляющих элементов запроса. - Возвращает:
- Экземпляр
LdapContext(не null). - Исключения:
-
NamingException- Если при создании нового экземпляра произошла ошибка. - См. также:
InitialLdapContext
reconnect
void reconnect(Control[] connCtls)
throws NamingException Подключается к серверу LDAP с использованием предоставленных управляющих элементов и среды этого контекста.
Этот метод является способом явного инициирования операции «связывания» LDAP. Например, вы можете использовать этот метод для установки управляющих элементов запроса для операции «связывания» LDAP или для явного подключения к серверу, чтобы получить управляющие элементы ответа, возвращаемые операцией «связывания» LDAP.
Этот метод устанавливает управляющие элементы запроса соединения этого контекста в качестве новых управляющих элементов запроса соединения. Управляющие элементы запроса контекста этого контекста не затрагиваются. После вызова этого метода любые последующие неявные повторные подключения будут выполняться с использованием connCtls. connCtls также используются в качестве управляющих элементов запроса соединения для новых экземпляров контекста, полученных из этого контекста. Эти управляющие элементы запроса соединения не затрагиваются setRequestControls().
Реализаторы поставщиков услуг должны прочитать раздел «Поставщик услуг» в описании класса для получения подробностей реализации.
- Параметры:
-
connCtls- Возможно нулевые управляющие элементы. Если 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, управляющие элементы не используются. - Исключения:
-
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, 2020, 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/11/docs/api/java.naming/javax/naming/ldap/LdapContext.html