JavaTM 2 Platform
Standard Ed. 6

javax.naming.ldap
介面 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
另請參見:
ExtendedResponse, LdapContext.extendedOperation(javax.naming.ldap.ExtendedRequest)

方法摘要
 ExtendedResponse createExtendedResponse(String id, byte[] berValue, int offset, int length)
          創建與此請求對應的回應物件。
 byte[] getEncodedValue()
          檢索 LDAP 擴展操作請求的 ASN.1 BER 編碼值。
 String getID()
          檢索請求的物件標識符。
 

方法詳細資訊

getID

String getID()
檢索請求的物件標識符。

返回:
表示 LDAP ExtendedRequest.requestName 元件的非 null 物件標識符字元串。

getEncodedValue

byte[] getEncodedValue()
檢索 LDAP 擴展操作請求的 ASN.1 BER 編碼值。如果值不存在,則返回 null。 結果為原始 BER 位元組,包括請求值的標記和長度。它不包括請求 OID。服務提供者調用此方法獲取將置於擴展操作中的位,該操作將被發送給 LDAP 伺服器。

返回:
表示 LDAP ExtendedRequest.requestValue 元件的 ASN.1 BER 編碼內容的位元組陣列(可能為 null)。
拋出:
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 - 回應控制元件的 ASN.1 BER 編碼值(可能為 null)。此為原始 BER 位元組,包括回應值的標記和長度。它不包括回應 OID。
offset - berValue 中要使用的位元組的開始位置。
length - berValue 中要使用的位元組數。
返回:
非 null 物件。
拋出:
NamingException - 如果因出錯而無法創建擴展回應。
另請參見:
ExtendedResponse

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only