Module java.naming

Interface ExtendedRequest

所有超级接口:
Serializable
所有已知实现类:
StartTlsRequest

public interface ExtendedRequest extends Serializable
该接口表示在RFC 2251中定义的LDAPv3扩展操作请求。
     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
参见:
  • Method Summary

    Modifier and Type
    Method
    Description
    createExtendedResponse(String id, byte[] berValue, int offset, int length)
    创建与此请求对应的响应对象。
    byte[]
    检索LDAP扩展操作请求的ASN.1 BER编码值。
    getID()
    检索请求的对象标识符。
  • Method Details

    • getID

      String getID()
      检索请求的对象标识符。
      返回:
      非空对象标识符字符串,表示LDAP ExtendedRequest.requestName 组件。
    • getEncodedValue

      byte[] getEncodedValue()
      检索LDAP扩展操作请求的ASN.1 BER编码值。如果值不存在,则返回Null。结果是原始的BER字节,包括请求值的标签和长度。它不包括请求OID。服务提供程序调用此方法以获取要放入要发送到LDAP服务器的扩展操作中的位。
      返回:
      可能为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中的字节数。
      返回:
      非空对象。
      抛出:
      NamingException - 如果由于错误无法创建扩展响应。
      参见: