Интерфейс ExtendedRequest
- Все суперинтерфейсы:
Serializable
- Все известные реализующие классы:
StartTlsRequest
public interface ExtendedRequest extends Serializable
ExtendedRequest ::= [APPLICATION 23] SEQUENCE {
requestName [0] LDAPOID,
requestValue [1] OCTET STRING OPTIONAL }
Он состоит из строки идентификатора объекта и необязательного значения в кодировке ASN.1 BER. Методы этого класса используются поставщиком услуг для формирования битов, отправляемых на сервер LDAP. Обычно приложения работают только с классами, реализующими этот интерфейс, и передают им всю информацию, необходимую для конкретного запроса расширенной операции. Затем такой класс передаётся в качестве аргумента методу LdapContext.extendedOperation() для выполнения расширенной операции LDAPv3.
Например, предположим, что сервер LDAP поддерживает расширенную операцию «получить время». Для неё будут предоставлены классы GetTimeRequest и GetTimeResponse:
public class GetTimeRequest implements ExtendedRequest {
public GetTimeRequest() {... };
public ExtendedResponse createExtendedResponse(String id,
byte[] berValue, int offset, int length)
throws NamingException {
return new GetTimeResponse(id, berValue, offset, length);
}
...
}
public class GetTimeResponse implements ExtendedResponse {
long time;
public GetTimeResponse(String id, byte[] berValue, int offset,
int length) throws NamingException {
time = ... // decode berValue to get time
}
public java.util.Date getDate() { return new java.util.Date(time) };
public long getTime() { return time };
...
}
Затем программа использует эти классы следующим образом:
GetTimeResponse resp =
(GetTimeResponse) ectx.extendedOperation(new GetTimeRequest());
long time = resp.getTime();
- Начиная с версии:
- 1.3
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ExtendedResponse |
createExtendedResponse |
Создаёт объект ответа, соответствующий этому запросу. |
byte[] |
getEncodedValue() |
Возвращает значение запроса расширенной операции LDAP в кодировке ASN.1 BER. |
String |
getID() |
Возвращает идентификатор объекта запроса. |
Подробное описание методов
getID
String getID()
- Возвращает:
- Строка идентификатора объекта, не равная null и представляющая компонент LDAP
ExtendedRequest.requestName.
getEncodedValue
byte[] getEncodedValue()
- Возвращает:
- Возможно, null; массив байтов, представляющий содержимое компонента LDAP
ExtendedRequest.requestValueв кодировке ASN.1 BER. - Выбрасывает:
-
IllegalStateException— если закодированное значение невозможно получить, поскольку запрос содержит недостаточные или недопустимые данные/состояние.
createExtendedResponse
ExtendedResponse createExtendedResponse(String id, byte[] berValue, int offset, int length) throws NamingException
После отправки поставщиком услуг запроса расширенной операции на сервер LDAP сервер вернёт ответ. Если операция завершилась неудачно, поставщик выбросит NamingException. Если операция выполнена успешно, поставщик вызовет этот метод, используя данные, полученные в ответе. Этот метод должен вернуть класс, реализующий интерфейс ExtendedResponse и подходящий для запроса расширенной операции.
Например, класс запроса Start TLS должен уметь обрабатывать ответ расширенной операции Start TLS. Для этого он создаёт класс, реализующий ExtendedResponse.
- Параметры:
-
id— возможно, null; идентификатор объекта элемента управления ответом. -
berValue— возможно, null; значение элемента управления ответом в кодировке ASN.1 BER. Это необработанные байты BER, включая тег и длину значения ответа. Оно не включает OID ответа. -
offset— начальная позиция байтов, используемых из berValue. -
length— количество байтов, используемых из berValue. - Возвращает:
- Объект, не равный 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://docs.oracle.com/en/java/javase/25/docs/api/java.naming/javax/naming/ldap/ExtendedRequest.html