前提知識として、JAX-RS をさらっと認識しておくと良い。
何故 REST なのか、REST の何がうれしいかを見ておく。
JAX-RS 1 について : http://www.coppermine.jp/docs/programming/2012/12/jaxrs1.html
JAX-RS 2 について : http://www.coppermine.jp/docs/programming/2012/12/jaxrs2.html
JAX-RS 2 を見るにあたっては、CDI も見ておくと良い。
CDI :: https://blogs.oracle.com/nishigaya/entry/javaee6_understanding_cdi_part_1
1 と 2 どちらを用いるかは、作成するアプリケーションの API の複雑性・多様性によって決めると良い。
テキストのみを扱うシンプルな API に JAX-RS 2 の仕様を実装するのもどうかと思う。
Jersey1
ここでは、JAX-RS 1 の実装である、Jersey 1系 を使って、Servlet 環境を作成する。
Jersey 1系の最新 1.18 を以下からダウンロードできる。
https://jersey.java.net/download.html
ダウンロードしたファイルを解凍して、以下を Tomcat プロジェクトのライブラリとして登録する。
- asm-3.1.jar
- jersey-client-1.18.jar
- jersey-core-1.18.jar
- jersey-json-1.18.jar
- jersey-server-1.18.jar
- jersey-servlet-1.19.jar
- jsr311-api-1.1.1.jar
次に、web.xml を準備する。WEB-INF/web.xml を以下の様に作成する。
servlet タグには、servlet-name と対応する servlet-class を記載する。
これは、jerseyのクラスを設定する。init-paramには、jerseyを使うパッケージを設定する。
ここでは「jp.masazdream.scryi.server.api」である。
load-on-startup で、アプリケーションがコンテナにロードされるときに、初期化するよう設定する。
servlet-mapping では、servlet-name が一致した servlet にアクセスする url-patternを設定する。
ここでは、<アプリケーションコンテキスト名>/api/~ でアクセスする。
~ は、Jerseyによってアノテーションで記述する。
次に、jp.masazdream.scryi.server.api パッケージにクラスを記述する。
アノテーション「@Path」に続けて書いたのが、~部分である。
また、Doma を使った DAO 部分の記述をテストとして記述しているが、適当な文字列を返すほうがはじめの一歩の検証に良いだろう。
アプリケーションコンテキスト名は、Eclipse で作成したプロジェクトの場合、通常プロジェクト名がデフォルトで設定されるが、以下の手順で変更が可能である。
[プロジェクトプロパティ]-[Tomcat]-[全般タブ]-コンテキスト名
である。例えば、「test」と設定したとする。
Tomcatプロジェクト全般の設定については、以下が参考になる。
http://seesaawiki.jp/salyu/d/Eclipse%A4%CB%A4%AA%A4%B1%A4%EBTomcat%A4%CE%C0%DF%C4%EA
以上で、以下のURLからAPIをたたくことが可能である。
ここでは「jp.masazdream.scryi.server.api」である。
load-on-startup で、アプリケーションがコンテナにロードされるときに、初期化するよう設定する。
servlet-mapping では、servlet-name が一致した servlet にアクセスする url-patternを設定する。
ここでは、<アプリケーションコンテキスト名>/api/~ でアクセスする。
~ は、Jerseyによってアノテーションで記述する。
次に、jp.masazdream.scryi.server.api パッケージにクラスを記述する。
アノテーション「@Path」に続けて書いたのが、~部分である。
また、Doma を使った DAO 部分の記述をテストとして記述しているが、適当な文字列を返すほうがはじめの一歩の検証に良いだろう。
アプリケーションコンテキスト名は、Eclipse で作成したプロジェクトの場合、通常プロジェクト名がデフォルトで設定されるが、以下の手順で変更が可能である。
[プロジェクトプロパティ]-[Tomcat]-[全般タブ]-コンテキスト名
である。例えば、「test」と設定したとする。
Tomcatプロジェクト全般の設定については、以下が参考になる。
http://seesaawiki.jp/salyu/d/Eclipse%A4%CB%A4%AA%A4%B1%A4%EBTomcat%A4%CE%C0%DF%C4%EA
以上で、以下のURLからAPIをたたくことが可能である。
http://localhost:8080/test/api/communication