使用RESTlet架構開發符合JSR311規範標準的REST Web Service

來源:互聯網
上載者:User

JSR311 作為 Java 實現 REST Web Service 的規範標準,儘管從出生起就備受爭議,但從事實上,已 經普遍被大多數 REST 實現架構的接受。這中間,既有 Sun 公司原產的 Jersey, 也有其他的開源項目, 如 Jboss 的 RESTEasy, Apache 的 CXF 等。當然,還有發展時間最長,相當成熟的 RESTlet 架構。

RESTlet 的主體核心是按照 Roy Thomas Fielding 的著作"Architectural Styles and the Design of Network-based Software Architectures"。結構清晰,穩定性強。但是該架構下的資源定義是有別於 JSR311 的那種 JAX-WS 風格的 annotation。這對於鐘愛 RESTlet 的 Web Service 開發人員,就面臨著 選擇陣營的風險。所幸的是,RESTlet 的領導開發人員 J é rome Louve 也是 JSR311 的參與者 , 這反 映在 RESTlet 1.1 提供了一個 Extension 來協助 RESTlet 的開發人員編寫符合 JSR311 的 Web Service。某些企業級產品,如 IBM Systems Director 6.1.2, 已經在產品中使用這種技術。本文重點介 紹 JAX-RS extension 的基本實現結構以及如何利用該外掛程式進行 JSR311 規範標準的 REST Service。

本文以 Neolies RESTlet 1.1.8 作為討論的基礎,並且假定讀者已經對 REST,JAX-RS 以及 RESTlet 有一定的理解。因此不會詳細討論相關的基本知識,讀者也可以通過閱讀"構建 RESTful Web 服務"來獲 取這方面的相關知識。

RESTlet 和 JSR-311

JAX-RS Annotation 簡介

@Path: 用來映射 URI,為資源類以及資源類中包含的方法提供訪問路徑。

@GET: 表示處理 HTTP GET 請求的資源類方法。當 Web Service 獲得用戶端發出的對與某個網路資源 的 HTTP GET 操作時,伺服器會調用被 @GET 註解後的方法來處理 GET 請求。當然,被調用的資源類方 法首先得滿足 URI。

@POST: 表示處理 HTTP POST 請求的資源類方法。和 @GET 相類似,只不過對應的是 HTTP POST 操作 。

@PUT: 表示處理 HTTP PUT 請求的資源類方法。該 Annotation 通常用於更新網路對象的方法。和 @GET,@POST 處理流程相類似。

@DELETE: 表示處理 HTTP DELETE 請求的資源類方法。使用該 Annotation 後的方法通常是刪去每個 網路對象的執行個體。處理流程和 @GET,@POST,@PUT 相類似。

@HEAD: 表示處理 HTTP HEAD 請求的資源類方法。通常情況下,根據 JAX-RS 規範的設定,在沒有實 現 @HEAD 的資源類方法時,RESTlet JAX-RS extension 會自動處理 HTTP HEAD 請求,@GET 註解的資源 類方法會自動被調用。和處理普通的 HTTP GET 請求的區別是沒有執行個體被返回。@HEAD 註解的資源類方法 通常用來擷取 Web Services 能夠接受的資料格式。

@Produces: 用來表示資源類方法能夠返回的 MIME 的媒體類型。

@Consumes: 用來表示資源類方法能夠處理的 MIME 的媒體類型。

Neolies RESTlet 設計風格上盡量遵循 Roy Fielding 博士論文中所闡述的 REST 的目標。從實現層 面上,Neolies RESTlet 可以分為三個部分:

RESTlet API: 這個部分設計了 RESTlet 的架構,包括在經典 REST 結構中所包括的 Application, Component,Route,Connector,VirtualHost, Resource 等,都在這個部分被詳細定義。

NRE(Noelios Restlet Engine):這個部分是對 RESTlet API 的參考實現,RESTlet API 通過代理模 式 (Delegation) 將具體的工作轉交到 NRE 中執行,如 RESTlet API 中的 Application 在 NRE 中的代 理就是 ApplicationHelper。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.