BT

新しい あなたは、アーリーアダプター?それともイノベーター?そんな皆様に、InfoQの新機能をご案内しています。詳細はこちら

Java EE 6 Webサービス:JAX-RS 1.1がアノテーションベースのRESTサポートを提供

| 作者: Srini Penchikala フォローする 6 人のフォロワー , 翻訳者 南 伸二  人のフォロワー 投稿日 2010年2月22日. 推定読書時間: 1分未満 |

原文(投稿日:2010/02/11)へのリンク

JavaEE 6リリースはRestful Webサービス(JAX-RS)サポートを含んでいる。これは、Representational State Transfer (REST)スタイルのソフトウェアアーキテクチャに従う軽量のWebサービスの構築をPOJOベースのフレームワークを提供する。JAX-RS APIはJSR 311の一部であり、JavaクラスメソッドをWebサービスとして外部に提供するために使われる行くつかのアノテーションを提供する。

JAX-RSは自動的にJavaの型をMIMEメディアタイプに変換する。例えば、クラスメソッドに"@Produces (MediaType.TEXT_PLAIN)"というアノテーションをつけたら、JAX-RSはそのJavaの型をプレーンテキストをあらわす"text/plain"MIMEタイプに変換し、クライアントへのHTTPレスポンスの中にそのタイプの内容を返すだろう。

Java EE 6はこの技術の最新のリリースJAX-RS 1.1に含まれている。このバージョンはメンテナンスリリースであり、JAX-RSをJava 6 EEの新しい機能に合わせるためのものだ。Jerseyは、そのJAX-RS仕様のオープンソースリファレンス実装である。Jersey 1.1.5はJAX-RS 1.1を実装している。

アノテーションはリソースを識別しHTTPリクエストを扱うために必要とされる情報を付与する。JAX-RSでサポートされているアノテーションをいくつかあげると次のようなものがある:

Path: このアノテーションはリソースの相対パスを指示する。@Pathはリソースクラスまたはクラスメソッドがリクエストを扱うことになるURIパスを特定する。

GET: @GETアノテーションはアノテーションのついたメソッドがHTTP GETリクエストを扱うものであるということを示す。クライアントがウェブリソースのURIにリクエストを行った時、JAX-RSランタイムはそのGETリクエストを扱うためにこのアノテーションのついたjavaメソッドを起動する。

POST: @POSTアノテーションはアノテーションのついたメソッドがHTTP POSTリクエストに応答するものであることを示す。

Produces: このアノテーションはリソースのメソッドが生成し、クライアントに返却することができるMIMEメディアタイプを示す。

Consumes: @Consumesアノテーションはリソースのメソッドがクライアントから受け入れられるMIMEメディアタイプを示す。@Producesアノテーションの場合と同じように、@Consumesがあるクラスに対して指示されたら、そのクラスのすべてのメソッドに適用される。@Consumesがメソッドに対して指示されたら、クラスに対して指示したいかなる@ConsumesアノテーションもそのMIMEタイプで上書きされる。

JAX-RSはまた、リクエストから情報を取り出すのに使われるパラメータベースのアノテーションのような便利な機能を他にも持っている。これらのアノテーションの一つが@QueryParamであり、これはリクエストURLのクエリ構成要素からクエリパラメータを取り出すために使われる。他にもパラメータベースのアノテーションがあり、@MatrixParamはURLパスの断片から情報を取り出すために、@HeaderParamはHTTPヘッダから情報を取り出すために、そして@CookieParamはcookieに関連したHTTPヘッダに宣言されたcookieから情報を取り出すために利用される。

他にも、JavaでRESTfulWebサービスを構築し利用することに関する作業をずっと簡単にするかなりの数のユーティリティクラスやインターフェースがある。これらのクラスには以下のようなものがある:

  • MediaTypeクラスはMIMEメディアタイプを抽象化するために使われる。
  • UriInfoはアプリケーションとリクエストURIの情報にアクセスするためのインターフェースである。
  • UriBuilderはユーティリティクラスを把握しているURIテンプレートであり、その構成要素からURIを構築するために利用される。
  • ResponseはHTTPレスポンスを表現する抽象クラスである。これはアプリケーションがランタイムにメタデータを提供する必要があるときに戻り値インスタンスとランタイムの間の契約を定義する。アプリケーションクラスはこのクラスを直接拡張することもできるし、ResponseBuilderを使ってインスタンスを作成するためにスタティックメソッドの一つを利用することもできる。
  • Response.ResponseBuilderはビルダーパターンにそってResponseオブジェクトを生成するクラスである。

JBoss由来のRESTEasyフレームワークはJAX-RS仕様のもう一つの実装である。ApacheのオープンソースサービスフレームワークCXFもそのバージョン2.3リリースの一部としてJAX-RS 1.1のサポートを提供するだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT