本頁面是瞭解 WebDAV JAX-RS 延伸程式庫的起始點。包含的主題如下:
附註:JAX-RS WebDAV 延伸隨附於 WebSphere Application Server 執行時期。JAX-RS WebDAV 延伸不是由 Web 2.0 and Mobile Toolkit 所安裝。Web-based Distributed Authoring and Versioning (WebDAV) 是一組已定義的 HTTP 方法和回應,以容許使用者在 Web 伺服器上讀取及寫入文件。現今,大部分的網站皆使用基本 HTTP,讓使用者能夠輕鬆地使用 HTTP GET 方法來讀取資料,以及使用 HTTP POST 和 PUT 方法來建立及修改資料。WebDAV 藉由提供若干特性以設定及讀取文件內容、鎖定資源及支援收集,提升了管理、編輯及寫入文件的能力。WebDAV 定義一組 HTTP 方法以及要求和回應實體格式,以形成 WebDAV 通訊協定。
Apache Wink WebDAV JAX-RS 延伸程式庫可幫助 JAX-RS 應用程式開發者建置符合 WebDAV 標準的服務。它提供 WebDAV XML 的 JAXB 資料模型以幫助讀取要求及寫入回應、提供 Helper 類別以建置回應,以及提供 JAX-RS 型延伸以更輕鬆地建置 WebDAV 服務。
org.apache.wink.webdav.model 套件中提供 JAXB 模型。Helper 類別包括 org.apache.wink.webdav.server.WebDAVResponseBuilder,其建置具有各種內容的適當 WebDAV 回應。在 org.apache.wink.webdav 套件中,有可供 WebDAV HTTP 方法使用的 JAX-RS 相容 @HttpMethod 註釋,以及一般 WebDAV HTTP 標頭和內容的常數。請參閱 API 文件,以取得相關詳細資料。
如果您要從 WebSphere Application Server 第 7 版或第 8 版 Feature Pack for Web 2.0 and Mobile 移轉至 WebSphere Application Server 8.5 版,有幾個要考量的事項:
請詳閱 IBM JAX-RS 文件,以取得配置 JAX-RS 的相關資訊。您可以按一下適當的鏈結來查看 JAX-RS 文件:
您可以使用 WebDAV 延伸程式庫,來撰寫可以使用 WebDAV 通訊協定進行通訊的 JAX-RS 方法和資源。
以下是資源方法範例:
@WebDAVMethod.PROPFIND @Produces(MediaType.APPLICATION_XML) public Response findProperties() throws IOException { SyndFeed feed = /* create an Apache Wink SyndFeed */; return WebDAVResponseBuilder.propfind(feed); }
前一個方法會回應任何 HTTP PROPFIND 方法要求,而在使用 WebDAVresponseBuilder 時,此資源方法會傳回具有資訊來源資料的回應。
org.apache.wink.webdav.model Java 套件中提供一個 JAXB 模型,可幫助寫入回應及讀取要求。比方說,如果您想要剖析 WebDAV 鎖定要求,可以使用下列方式來讀取 XML:
String bodyContent = /* the XML request */ Unmarshaller unmarshaller = WebDAVModelHelper.createUnmarshaller(); Lockinfo lockinfo = WebDAVModelHelper.unmarshal(unmarshaller, new StringReader(bodyContent), Lockinfo.class, "lockinfo");
此外,您還可以利用若干個資源類別來幫助您開始建立 WebDAV 資源。
WebDAVResource 提供一個新增 WebDAV 適當標頭的 @OPTIONS 方法:
@Path("/myresource/") public class MyResource extends org.apache.wink.webdav.server.WebDAVResource { /* 從 WebDAVResource 取得標註 @OPTIONS 的 JAX-RS 資源方法實作 */ /* 實作您自己的 WebDAV 方法 */ }
WebDAVLockableResource 提供若干個用於執行 WebDAV 鎖定和解除鎖定的 stub 方法。 它們不執行實際的鎖定,但是提供偽造鎖定以滿足與某些平台的相容性:
@Path("/myresource2/") public class MyResource2 extends org.apache.wink.webdav.server.WebDAVLockableResource { /* get @LOCK and @UNLOCK stub methods for compatibility */ /* 實作您自己的 WebDAV 方法 */ }