|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
請參見:
描述
介面摘要 | |
---|---|
Control | 此介面表示在 RFC 2251 中定義的 LDAPv3 控制元件。 |
ExtendedRequest | 此介面表示在 RFC 2251 中定義的 LDAPv3 擴展操作請求。 |
ExtendedResponse | 此介面表示在 RFC 2251 中定義的 LDAP 擴展操作回應。 |
HasControls | 此介面用於返回控制元件,並使物件返回在 NamingEnumeration 中。 |
LdapContext | 此介面表示一個上下文,在該上下文中可以利用 LDAPv3 樣式的控制元件執行操作,並且可以執行 LDAPv3 樣式的擴展操作。 |
UnsolicitedNotification | 此介面表示在 RFC 2251 中定義的未經請求的通知。 |
UnsolicitedNotificationListener | 此介面用於處理 UnsolicitedNotificationEvent。 |
類別摘要 | |
---|---|
BasicControl | 此類別提供 Control 介面的基本實作。 |
ControlFactory | 此抽象類別表示用於創建 LDAPv3 控制元件的處理器。 |
InitialLdapContext | 此類別是執行 LDAPv3 樣式的擴展操作和控制元件的初始上下文。 |
LdapName | 此類別表示 RFC 2253 指定的標識名。 |
ManageReferralControl | 將參考和其他特殊 LDAP 物件作為普通 LDAP 物件處理的請求。 |
PagedResultsControl | 請求由 LDAP 伺服器以指定的大小批量返回搜尋操作的結果。 |
PagedResultsResponseControl | 指示一批搜尋結果的末尾。 |
Rdn | 此類別表示相對標識名,或 RDN,它是一個 RFC 2253 指定的標識名元件。 |
SortControl | 請求 LDAP 伺服器在返回搜尋操作的結果前對這些結果進行排序。 |
SortKey | 排序鍵及其關聯的排序參數。 |
SortResponseControl | 指示搜尋結果的請求排序是否成功。 |
StartTlsRequest | 此類別實作在 Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security 中定義的 StartTLS 的 LDAPv3 擴展請求。 |
StartTlsResponse | 此類別實作在 Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security 中定義的 StartTLS 的 LDAPv3 擴展回應。 |
UnsolicitedNotificationEvent | 此類別表示為回應 LDAP 伺服器發送的未經請求的通知而觸發的事件。 |
異常摘要 | |
---|---|
LdapReferralException | 此抽象類別用於表示 LDAP 參考異常。 |
提供對 LDAPv3 擴展操作和控制元件的支持。
此套件擴展 Java Naming and Directory InterfaceTM (JNDI) 的目錄操作。 JNDI 向使用 Java 程式語言編寫的應用程序提供命名和目錄功能。它被設計成與任何特定的命名或目錄服務實作無關。因此可以使用共同的方式對多種服務(新的、新出現的及已經部署的服務)進行存取。
此套件用於處理 LDAPv3 擴展操作和控制元件的應用程序和服務提供者,這在 RFC 2251 中定義。此套件中的核心介面是 LdapContext,該介面定義了一些在上下文中執行擴展操作和處理控制元件的方法。
此套件定義了介面 ExtendedRequest 來表示擴展操作的參數,定義了介面 ExtendedResponse 來表示擴展操作的結果。擴展回應始終與擴展請求成對出現,但反過來不一定成立。即擴展請求可以沒有對應的擴展回應。
應用程序通常不直接處理這些介面,而是處理實作 這些介面的類別。應用程序可能作為通過 IETF 進行標準化的擴展操作清單的一部分獲取這些類別,也可能從特定於供應商的擴展操作的目錄供應商獲取這些類別。請求類別應該具有以型別安全的、使用者友好的方式接受參數的建構子,而回應類別應該具有以型別安全的、使用者友好的方式獲取回應資料的存取方法。請求/回應類別在內部處理編碼和解碼的 BER 值。
例如,假定 LDAP 伺服器支持“獲取時間”擴展操作。它將提供諸如 GetTimeRequest 和 GetTimeResponse 之類別的類別,以便應用程序可以使用此功能。應用程序將按以下方式使用這些類別:
GetTimeResponse resp = (GetTimeResponse) ectx.extendedOperation(new GetTimeRequest()); long time = resp.getTime();
GetTimeRequest 和 GetTimeResponse 類別可能按照以下方式定義:
public class GetTimeRequest implements ExtendedRequest { // User-friendly constructor public GetTimeRequest() { }; // Methods used by service providers public String getID() { return GETTIME_REQ_OID; } public byte[] getEncodedValue() { return null; // no value needed for get time request } 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; // called by GetTimeRequest.createExtendedResponse() public GetTimeResponse(String id, byte[] berValue, int offset, int length) throws NamingException { // check validity of id long time = ... // decode berValue to get time } // Type-safe and User-friendly methods public java.util.Date getDate() { return new java.util.Date(time); } public long getTime() { return time; } // Low level methods public byte[] getEncodedValue() { return // berValue saved; } public String getID() { return GETTIME_RESP_OID; } }
應用程序通常不直接處理此介面,而是處理實作 此介面的類別。應用程序可能作為通過 IETF 進行標準化的控制元件清單的一部分獲取控制元件類別,也可能從特定於供應商的控制元件的目錄供應商獲取這些類別。請求控制元件類別應該具有以型別安全的、使用者友好的方式接受參數的建構子,而回應控制元件類別應該具有以型別安全的、使用者友好的方式獲取回應資料的存取方法。請求/回應控制元件類別在內部處理編碼和解碼的 BER 值。
例如,假定 LDAP 伺服器支持“簽章結果”請求控制元件,將此控制元件與請求一起發送時,它將請求伺服器對操作的結果進行數位簽章。它將提供 SignedResultsControl 類別,以便應用程序可以使用此功能。應用程序將按以下方式使用此類別:
SignedResultsControl 類別可能按照以下方式定義:Control[] reqCtls = new Control[] {new SignedResultsControl(Control.CRITICAL)}; ectx.setRequestControls(reqCtls); NamingEnumeration enum = ectx.search(...);
public class SignedResultsControl implements Control { // User-friendly constructor public SignedResultsControl(boolean criticality) { // assemble the components of the request control }; // Methods used by service providers public String getID() { return // control's object identifier } public byte[] getEncodedValue() { return // ASN.1 BER encoded control value } ... }
當服務提供者接收回應控制元件時,它將使用 ControlFactory 類別產生實作 Control 介面的特定類別。
LDAP 伺服器可以利用 LDAP 操作及列舉結果(如列舉或搜尋操作返回的那些結果)發迴響應控制元件。LdapContext 提供方法 (getResponseControls()) 來獲取利用 LDAP 操作發送的回應控制元件,而 HasControls 介面用於檢索與列舉結果關聯的回應控制元件。
例如,假定 LDAP 伺服器發回“更改 ID”控制元件來回應成功修改。它將提供 ChangeIDControl 類別,以便應用程序可以使用此功能。應用程序將執行更新,然後試圖獲取更改 ID。
供應商可能提供以下 ChangeIDControl 和 VendorXControlFactory 類別。當服務提供者從 LDAP 伺服器接收回應控制元件時,該提供者將使用 VendorXControlFactory。// Perform update Context ctx = ectx.createSubsubcontext("cn=newobj"); // Get response controls Control[] respCtls = ectx.getResponseControls(); if (respCtls != null) { // Find the one we want for (int i = 0; i < respCtls; i++) { if(respCtls[i] instanceof ChangeIDControl) { ChangeIDControl cctl = (ChangeIDControl)respCtls[i]; System.out.println(cctl.getChangeID()); } } }
public class ChangeIDControl implements Control { long id; // Constructor used by ControlFactory public ChangeIDControl(String OID, byte[] berVal) throws NamingException { // check validity of OID id = // extract change ID from berVal }; // Type-safe and User-friendly method public long getChangeID() { return id; } // Low-level methods public String getID() { return CHANGEID_OID; } public byte[] getEncodedValue() { return // original berVal } ... } public class VendorXControlFactory extends ControlFactory { public VendorXControlFactory () { } public Control getControlInstance(Control orig) throws NamingException { if (isOneOfMyControls(orig.getID())) { ... // determine which of ours it is and call its constructor return (new ChangeIDControl(orig.getID(), orig.getEncodedValue())); } return null; // not one of ours } }
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個軟體套件 下一個軟體套件 | 框架 無框架 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。