JAX-RSの最初の一歩
今回はJAX-RSです。
【概要】
JAX-RSはJavaでRESTによるWebサービスを
実行するためのテクノロジーです。
[JSR-311]
The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 311
【サンプルコード】
[アプリケーションクラス]
JAX-RSを使用するためには
アプリケーションクラスを作成する必要があります。
package jp.glory.ui.application; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/service") public class SampleResources extends Application { }
アプリケーションクラスは
javax.ws.rs.core.Applicationクラスを継承します。
[リソースクラス]
サービスを提供するリソースクラスです。
package jp.glory.ui.service; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("sample") public class SampleService { @GET @Produces(MediaType.TEXT_PLAIN) public String getGetMesssage() { return "Get Test"; } @POST @Produces(MediaType.TEXT_PLAIN) public String getPostMessage() { return "Post Test"; } }
リソースクラスはPOJOです。
リソースクラスには
javax.ws.rs.Pathアノテーションをつけます。
Pathアノテーションにはサービスのパスを指定します。
サービスのエンドポイントとなるメソッドには
対応するHTTPメソッドを指定する必要があります。
サンプルではjavax.ws.rs.GETアノテーション、
javax.ws.rs.POSTアノテーションを指定します。
サービスの結果の形式を指定するには
javax.ws.rs.Producesアノテーションを指定します。
Producesアノテーションには文字列を指定します。
javax.ws.rs.core.MediaTypeクラスに
主要なものが定義されているので、
MediaTypeクラスを使用したほうが良さそうです。
MediaTypeで定義されている定数と値はJavadocを参照してください。
[呼び出しページ]
サービスを呼び出すページです。
<html> <head> <title>JAX-RSサンプル</title> </head> <body> <form action="service/sample" method="post"> <input type="submit" value="POST 送信" /> </form> <form action="service/sample" method="get"> <input type="submit" value="GET 送信" /> <br/> <a href="service/sample">リンク</a> </form> </body> </html>
このHTMLはコンテキストルートの置いています。
[実行]
画面からボタンをクリックすると
GET、POSTに応じたメソッドが実行されます。
実行されるとブラウザに文字列が返却されるので、
ブラウザ上に文字列が表示されます。
[URLについてのまとめ]
サンプルソースだけだと
URLのイメージがわかないのでまとめてみました。
実行環境はローカルホスト、
コンテキスト名は「hoge」として記載しています。
[例その1]
今回のサンプルでのそれぞれの値です。
@ApplicationPathの値 | /service |
---|---|
@Pathの値 | /sample |
URL | http://localhost:8080/hoge/service/sample |
[例その2]
コンテキストルート以降をサービスにさせたい場合です。
@ApplicationPathの値 | / |
---|---|
@Pathの値 | /sample |
URL | http://localhost:8080/hoge/sample |