Интерфейс 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();
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
ExtendedResponse |
createExtendedResponse |
Создает объект ответа, соответствующий данному запросу. |
byte[] |
getEncodedValue() |
Возвращает закодированное значение ASN.1 BER запроса расширенной операции LDAP. |
String |
getID() |
Возвращает идентификатор объекта запроса. |
Подробное описание методов
getID
String getID()
- Возвращает:
- Непустая строка идентификатора объекта, представляющая компонент LDAP
ExtendedRequest.requestName.
getEncodedValue
byte[] getEncodedValue()
- Возвращает:
- Возможный массив байтов, представляющий закодированное содержимое ASN.1 BER компонента LDAP
ExtendedRequest.requestValue. - Исключения:
-
IllegalStateException- Если закодированное значение не может быть получено, потому что запрос содержит недостаточные или некорректные данные/состояние.
createExtendedResponse
ExtendedResponse createExtendedResponse(String id, byte[] berValue, int offset, int length) throws NamingException
После того, как поставщик сервиса отправил запрос на расширенную операцию серверу LDAP, он получит ответ от сервера. Если операция завершилась неудачно, поставщик выбросит исключение NamingException. Если операция завершилась успешно, поставщик вызовет этот метод, используя данные, полученные в ответ. Задача этого метода – вернуть класс, реализующий интерфейс ExtendedResponse, который соответствует запросу расширенной операции.
Например, класс расширенного запроса Start TLS должен знать, как обработать расширенный ответ Start TLS. Это делается путем создания класса, реализующего ExtendedResponse.
- Параметры:
-
id- Возможно, нулевой идентификатор объекта ответа. -
berValue- Возможно, нулевое значение ASN.1 BER ответа. Это сырые байты BER, включая тег и длину значения ответа. Он не включает OID ответа. -
offset- Начальная позиция в berValue байтов для использования. -
length- Количество байтов в berValue для использования. - Возвращает:
- Непустой объект.
- Исключения:
-
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/ExtendedRequest.html