JAX-RSとは
JAX-RSは、JavaでRESTful Webサービスを実現するためのAPIで、JSR-311として仕様策定作業が進められています。JavaEEの次世代バージョンにあたるJavaEE6のAPIグループに加わることが決まっている、将来性の高いAPIです。
執筆時点ではPublic Reviewが公開されている段階ですが、近い将来、最終仕様(Final Release)が確定するものと思われます。ちなみに、Public Reviewとして公開されているJSRドキュメント(PDF)のページ数は、たったの33ページです。このことからも分かるように、JAX-RSは、非常に軽量で、習得しやすいAPIと言うことができます。
JAX-RSの主な特徴を簡単にまとめると、以下のようになります。
- JAX-RSは、RESTful Webサービスのプロバイダ(サービス提供者)の開発のためのAPIである
- JAX-RSを使用したアプリケーションは、Webコンテナ(JavaEEサーバ)上に、Webアプリケーション(WARファイル)としてデプロイする
- JAX-RSは、POJO(Plain Old Java Object)ベースのAPIである
- JAX-RSの仕様は、HTTPの仕様と強く結びついている
JAX-RSの実装として利用できるライブラリはすでにいくつか存在しているのですが、本連載では"Jersey"を使用してJAX-RSの仕様・機能を紹介していきます。Jerseyは、サン・マイクロシステムズ社が運営するオープンソース開発サイト"Java.net"で開発が進められている、JAX-RS実装です。
以下のWebサイトよりダウンロードすることができます。
Jerseyの執筆時点の最新バージョンは0.8です。
JAX-RSはRESTful Webサービスを実現するためのAPIですが、RESTful Webサービスに限らず、汎用的なHTTPプロセッサとして活用することもできます。すなわち、RESTful Webサービスの設計思想(URI、HTTPメソッドおよびHTTPステータスの使い方に一定のルールを設ける)に則ったアプリケーション連携を実現するために使用することもできれば、特にHTTPの使用方法にルールを課さない、一般的なHTTP連携(POX over HTTPなど)のために使用することもできます。
JAX-RSのメカニズムを図にすると、以下のようになります。本連載では、JAX-RSのエンジン部分となる実装(本連載ではJersey)を「JAX-RSエンジン」、アプリケーションとして作成するWebリソースを表すクラスを「Webリソースクラス」と呼称します。