JAX-RSの最初の一歩

今回はJAX-RSです。

【前提条件】

[環境]

【サンプルコード】

[アプリケーションクラス]

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クラスを継承します。

javax.ws.rs.ApplicationPathアノテーション
WebサービスのルートURLを指定します。

[リソースクラス]

サービスを提供するリソースクラスです。

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を参照してください。

JAX-RS関連のJavadoc
jsr311

[呼び出しページ]

サービスを呼び出すページです。

<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