2013-09-01

Tags: jax-rs , jersey , 程式語言 , java

這陣子因為工作上的需求,想把一些舊 code 改用 JAX-RS 寫法,藉以減輕舊 code 複雜度。不過...評估後發現似乎沒簡化多少,只好直接放棄。雖然如此,但在研究 JAX-RS 的過程中有不少收獲,所以把它記錄下來,以備未來不時之需。

JAX-RS 是什麼玩意兒,可參考這份slide,看完後會有完整概念

用JAX-RS和Jersey完成RESTful Web Services from javatwo2011

JAX-RS 的實作有蠻多家的可以選的,我的選擇是 Jersey,選它的原因是我認識的眾 大濕 大師都對它有好評,所以就決定是它了...XD

Restful 的應用目前我知道可以區分成二種
  1. Restful Web Service
  2. Restful Web Application
這二者的差異其實也只在於後者把 Restful URI 應用到 web application 而已,單純是應用上的不同,技術上其實是一致的。

Jersey 快速上手文件,可以參考下面這儿份,看完後就有辦法寫出 Restful Web Service
如果是想用 Jersey 寫出 Restful Web Application 的話,則是參考下面這份文件。
在找 Jersey 資料的當時,也有想到如果用 Spring,它是怎麼實 作Restful。當時找到的文件是這份,有興趣的可以參考一下。
在官方文件方面,Jersey 分成 1.x 跟 2.x 的文件,請挑自己需要的版本來看。如果要用 Jersey 做深入應用,這些文件最好還是乖乖看一看。
最後,在這邊提一下使用 Jersey 要注意的儿個地方
  1. 要注意 Jersey 回傳資料的型別,如果回傳值是 int,可能會遇到些問題。Stackoverflow 有相關討論,可以去看看前人的解法。
  2. Jersey 有 1.x 跟 2.x 的版本, 二個版本在一般使用上差異不大,可是 2.x 的版本最低要求是 "Java 6 + Servlet 2.5",如果你的 Servlet container 太舊的話,建議用 1.x 的版本就好。如果沒特別的需求,其實用 1.x 的版本就已經足夠,而且白老鼠夠多,該踩的地雷大概也都被踩完了。
  3. Jersey 1.x 跟 2.x 在 API 的變動之處,可參考官方文件。我大略看了下,Server API 的變動對只簡單使用 Jersey 的人影響應該不大,但是 Client API 變動的影響就大了,有用的人要去注意新舊版的差異。