使用 Apache Jackrabbit 實現 WebDAV 用戶端

來源:互聯網
上載者:User

WebDAV 概述

WebDAV(Web Distributed Authoring and Versioning)是一種基於 HTTP 的通訊協 議,是對 HTTP 的一種擴充,它在 HTTP 協議的 GET、HEAD、POST 等方法的基礎上添加了一些新的方法,使 得使用者可以通過用戶端編輯和管理儲存在遠端檔案。這些方法包括 PROPFIND、PROPPATCH、MKCOL、COPY、 MOVE、LOCK、UNLOCK 等方法。

顧名思義,WebDAV 關注的是創作(Authoring)和版本控制 (Versioning)的功能,所以它在自己的協議(RFC 2518)裡增加了文件屬性、資源集合、鎖、命名空間等概 念和機制。

雖然 WebDAV 的最初是為了方便遠程創作和版本管理,但有了以上機制和方法,WebDAV 經 常用來和 FTP、SFTP 等網路傳輸協議進行對比,WebDAV 可以看作是對檔案傳輸通訊協定的一種補充和選擇。由於 使用的是 HTTP 的連接埠,WebDAV 可以方便地穿越防火牆。而且由於可以使用 HTTPS,WebDAV 在安全性上並不 遜色於 SFTP。

WebDAV 在實際中已有廣泛的應用。伺服器方面,如 Apache HTTP Server 和 Microsoft IIS 上都可以找到 WebDAV 的身影。用戶端方面,IBM Lotus、Microsoft Office 等辦公自動化軟 件都可以通過 WebDAV 編輯遠端文檔。

JCR 及 Apache Jackrabbit 簡介

JCR 是 Content Repository for Java Technology API 的縮寫,譯為 Java 內容儲存規範,其規範定義在 JSR170 和 JSR283 ,兩者分別定義了 JCR 的 1.0 和 2.0 版本。其目的是簡化 Java 的資料管理,並希望建立起一種基於內容 倉庫(Repository)而不是傳統資料庫(例如 RDBMS)的編碼模型。內容倉庫的一個典型應是內容管理系統( CMS)。JCR 是內容倉庫的抽象,因為實際的內容倉庫可以基於資料庫,可能基於檔案系統或者其他適合的存 儲機制,例如 WebDAV 倉庫。而內容倉庫的訪問也有多種方式,包括直接存取(如應用程式的本地倉庫),或 者作為資源來訪問(如通過 JNDI 來訪問 Java EE 的容器),也可以使用 HTTP 或者 RMI 方式通過網路訪問 。

Apache Jackrabbit 是由 Apache Foundation 提供的 JCR 的開源實現。其起源可以追溯到 2002 年的 Apache Jakarta Slide 項目,該專案計劃實現 JSR170 定義的內容倉庫。隨後在 2004 年,關於 JCR 的開源實現成為一個單獨的項目,並命名為“Jackrabbit”。關於 Jakarta 和 Slide 項目,最初的 Jakarta 是一個包含 Ant、Maven、JMeter 等著名子項目的集合,Slide 也是其中的一個子項目。Slide 項目的主要內 容是內容倉庫,其中一個重要功能就是對 WebDAV 的支援,WebDAV 也可以看作是內容倉庫的重要基石。但 Slide 項目在 2004 年以後便沒有更新,並於 2007 年正式關閉。目前對 WebDAV 的支援主要來自 Jackrabbit 項目,實現 JCR1.0 的最新版本為 Jackrabbit1.6,實現 JCR2.0 的最新版本為 Jackrabbit2.4 。

使用 Jackrabbit 實現 WebDAV 用戶端

在進行編碼前,只需要在自己的工程中包含 Jackrabbit 的 JAR 檔案(例如 jackrabbit-standalone-2.4.3.jar),並使得可以在代碼中成功匯入 jackrabbit 庫檔案的資源。本文以在 Eclipse 開發環境中開發 WebDAV 用戶端為例,介紹使用 Jackrabbit 實現 WebDAV 的用戶端。如圖所示,首先需要在建立的 WebDAV 用戶端工程中匯入 Jackrabbit JAR 檔案。

圖 1. 匯入 Jackrabbit JAR 檔案

一般情況下,可以按照圖 2 所示的 流程來實現 WebDAV 用戶端,首先需要建立 HTTP 網路連接,即建立一個 HttpClient 對象,然後調用所需的 WebDAV 方法,並擷取方法調用的狀態代碼和傳回值,並根據狀態代碼和傳回值決定是否調用或調用何種其他 WebDAV 方法。

圖 2. 實現 WebDAV 用戶端

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.