Module  java.naming
软件包  javax.naming.ldap

Interface ExtendedRequest

  • All Superinterfaces:
    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
    另请参见:
    ExtendedResponseLdapContext.extendedOperation(javax.naming.ldap.ExtendedRequest)
    • 方法详细信息

      • getID

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

        byte[] getEncodedValue​()
        检索LDAP扩展操作请求的ASN.1 BER编码值。 如果值不存在则返回空值。 结果是原始BER字节包括标签和请求值的长度。 它不包括请求OID。 该方法由服务提供商调用,以将这些位放入扩展操作以发送到LDAP服务器。
        结果
        表示LDAP ExtendedRequest.requestValue组件的ASN.1 BER编码内容的可能的空字节数组。
        异常
        IllegalStateException - 如果由于请求包含的数据/状态不足或无效而无法检索编码值。
      • createExtendedResponse

        ExtendedResponse createExtendedResponse​(String id,
                                                byte[] berValue,
                                                int offset,
                                                int length)
                                         throws NamingException
        创建与此请求对应的响应对象。

        服务提供商将扩展操作请求发送到LDAP服务器后,将从服务器收到响应。 如果操作失败,提供程序将抛出NamingException。 如果操作成功,则提供者将使用响应中返回的数据来调用此方法。 此方法的作用是返回一个实现扩展操作请求的ExtendedResponse接口的类。

        例如,启动TLS扩展请求类将需要知道如何处理启动TLS扩展响应。 它通过创建一个实现ExtendedResponse的类来实现。

        参数
        id - 响应控件的可能的空对象标识符。
        berValue - 可能为空的ASN.1响应控制的BER编码值。 这是包含标签和响应值长度的原始BER字节。 它不包括响应OID。
        offset - 在berValue中使用的字节的起始位置。
        length - 要使用的berValue中的字节数。
        结果
        非空对象。
        异常
        NamingException - 如果由于错误而无法创建扩展响应。
        另请参见:
        ExtendedResponse