Apache 目錄服務器是眾多的 Internet 協議中的一個開放源碼的、基于 java 的實現。ApacheDS 的核心是目錄服務,可以保存數據,并對不同類型的數據進行搜索操作。協議的實現在目錄服務器頂層工作,提供與數據存儲、搜索和檢索有關的 Internet 服務。
ApacheDS 最重要的特性可能是利用不同協議公開目錄服務的能力。這意味著可以把應用程序的數據(包括運行時的 Java 對象)保存在 ApacheDS 中,而不同的客戶機可以使用不同的協議來利用數據。由 ApacheDS 實現的最重要的協議是輕量級目錄訪問協議(LDAP)。ApacheDS 充當 LDAP 服務器,偵聽請求,與內部核心目錄服務協調,響應 LDAP 請求。
在這個兩部分的系列中,我將介紹核心的 ApacheDS 架構,并介紹在 ApacheDS 中保存運行時 Java 對象的全部步驟。因為我對 ApacheDS 的關注幾乎全在它作為 LDAP 服務器實現上,所以本系列的第 1 部分主要介紹 LDAP 功能和術語。但在進入這部分之前,我要介紹 ApacheDS 模塊化的可擴展架構,并解釋如何用它把新的協議實現和 Internet 服務插入 ApacheDS.對 ApacheDS 核心目錄服務工作方式的理解,有助于后面理解它提供 LDAP 功能的方式。
要跟上這篇文章的討論,需要 下載并安裝 ApacheDS 和 JXPlorer.可能還要下載 完整源代碼 供文章使用。
ApacheDS 中的目錄服務
目錄服務 是保存和組織數據的應用程序。目錄服務處理不需要頻繁更新的數據,例如系統用戶的個人數據(例如姓名、地址、電話號碼)或者車間的生產能力(例如安裝的設備的數量、型號和生產能力)。在本系列的第 2 部分中,將介紹一個整合了這兩種類型數據的示例應用程序。現在,我把重點放在 ApacheDS 提供目錄服務的方式上。
ApacheDS 實現 JNDI
在圖 1 中可以看到,ApacheDS 為自己的核心目錄服務實現了 Java 名稱和目錄接口(JNDI)包裝器。JNDI 是 Java 接口,定義了執行目錄操作的方法,例如在目錄中保存數據和搜索保存的數據。JNDI 是 Java 2 企業版(J2EE)和 Java 2 標準版(J2SE)的組成部分。其中 J2SE 只包含客戶端 JNDI 支持,而 J2EE 容器通常包含服務器端 JNDI 實現。J2EE 容器可以通過 ApacheDS 的 JNDI 包裝器利用它的目錄服務,如圖 1 所示:
圖 1. ApacheDS 在 J2EE 容器內工作

JNDI 中的接口集提供了目錄服務的抽象。JNDI 實現提供了與目錄服務對話的實際邏輯(例如,Java 平臺自帶了針對 LDAP 的 JNDI 實現)。只要擁有針對這一類型的 JNDI 實現,您就可以用 JNDI 與任何類型的目錄服務對話。假如想在基于 Java 的客戶機應用程序中使用 JNDI,就需要 JNDI 的客戶端實現??蛻舳?JNDI 實現提供的類,實現的是進行目錄操作請求的 JNDI.
ApacheDS 實現服務器端 JNDI.這意味著它包含的類,實現的是對目錄操作請求進行響應的 JNDI 接口。正如前面指出的(如 圖 1 所示),J2EE 容器可以通過 ApacheDS 的 JNDI 包裝器利用它的目錄服務。
可插入的協議支持
圖 1 只顯示了 ApacheDS 的一個使用模型。ApacheDS 的用途不僅僅是嵌在 J2EE 容器內作為目錄服務??梢杂?ApacheDS 實現任何需要后端目錄服務的協議。甚至可以用它同時為各種類型的協議服務;例如,當前的 ApacheDS 實現就同時實現了 LDAP 和 Kerberos.而且,ApacheDS 中支持的協議的列表仍在增長。
ApacheDS 擁有靈活的可擴展的架構,因此可以實現新的協議。在圖 2 中可以看到 ApacheDS 架構的模型,它工作在 圖 1 所示的 JNDI 包裝器之上:
圖 2. ApacheDS 靈活的可擴展的架構

可以看到,ApacheDS 使用一套叫做多用途網絡應用程序接口(MINA)的接口。MINA 支持把新的協議實現插入 ApacheDS.在介紹這些內容之前,我要解釋一下 MINA 的工作方式。
MINA 如何工作
MINA 中的接口包含的方法可以生成特定協議的工廠對象。這些工廠對象提供了把新協議實現插入 ApacheDS 的手段。協議實現負責實現 MINA 接口,ApacheDS 框架依靠 MINA 包含的方法與協議實現對話。
新聞熱點
疑難解答