Jersey2.x(JAX-RS)+Tomcat

忙しかったせいもあって2ヶ月近く放置してしまった。。ようやく落ち着いたので更新してみる。
相変わらず仕事内容的に色々新しいものに触らなければいけないことが多く、今回も予習

前回の記事のApacheAXISはSOAPなのでやや決まり事が多くて面倒な局面が結構あるが、
今回の記事で扱うRESTはいわゆる普通のHTTP通信のGETやPOSTと大差なく扱えてサーバとやりとりが出来る

マッシュアップのために使われたりしますね。気象情報や何かの統計とかもRESTful APIで公開されてたりすると思います。

サンプルの作成は記事の続きで

必要な環境

  • Eclipse 4.4 (Luna)
  • Tomcat8
  • Jersey 2.x
  • WTP関係のプラグイン

*Jerseyはリンク先の「 Jersey JAX-RS 2.0 RI bundle」というリンクでダウンロード

Eclipseとかのバージョンは異なっても平気だと思いますが、Jerseyは2.x前提となります(web.xmlの記述が異なる)

ちなみにMavenありきで解説されている場所が多いですが、私は実際に作るときネットワークが制限された環境でやらないといけないのでMavenは使いません。
あれって1回依存関係をDLさせてしまえば以後はネットなくても良いんですかね?
機会があれば触ってみよう。。。

Eclipseのtomcat実行環境が無い場合は先に作りましょう。下記の記事を参考にどうぞ
Silverlight+ApacheAxis

Java、Eclipseの基本知識は有している前提です。

1.動的Webプロジェクト作成

前回と同じくまずはJavaEEの動的Webプロジェクトを作成します。
新規→動的Webプロジェクト(※無い場合はその他でウィザードを開いて「Web」でフィルタ)

jaxrs01

 

名前はなんでも良いですが今回は「jaxrstest」とします。 このまま「完了」
とりあえず今回ここの設定は特に気にしなくてOKです。あとでweb.xmlをまるっと書き換えるので

2.web.xmlをJersey用に書き換える

プロジェクトが出来たら以下のフォルダにweb.xmlを作成します(あるなら開く)
WebContent/WEB-INF/

jaxrs02

内容は以下をコピーアンドペーストします

16行目のパッケージ名はこれから作るパッケージ名です。違う名前にするならここも変えます。

Jersey1.xのweb.xmlとは僅かに記述が違うのでご注意ください(私はしばらくこれで嵌りました。。。)

3.Jerseyのライブラリをプロジェクトへ追加

ダウンロードしてあるJerseyのZipファイルを解凍して、中身の3つのフォルダ
api, ext, libがありますが、これらの中身をすべて以下へD&Dしてファイルをコピーを選びます

WebContent/WEB-INF/lib

jaxrs03

こんな感じになります。自動でクラスパスに入ります。

4.Webサービスを作る

パッケージの追加をします。
com.kreislabo.web.api.rsrc

作ったパッケージ内にクラスファイルを作成します。
TestHello.java

内容はひとまずは文字列を出力するだけのシンプルなもの

5.Webサービス確認

なんとこれだけでシンプルなWebサービスが出来てしまっているのです。
確認するために今作ったプロジェクトをtomcatに設定してテストサーバを立ち上げてみましょう

サーバビューの「ローカル・ホスト の Tomcat v8.0 サーバー」(デフォルトの名前なら)をダブルクリックします。
下部にあるタブを「モジュール」に切り替えてWebモジュールの追加ボタンから現在作っているプロジェクトのjaxrstestを選びます。以下のようなリスト状態になったらCtrl+Sで保存します。
jaxrs04

設定画面は閉じて、今追加したローカルサーバを右クリックして「始動」を選びます。
以下のURLにアクセスします

http://localhost:8080/jaxrstest/rest/hello

Hello worldと表示されたら成功です。
かなり簡単に作れますね~

表示されない場合は高確率でtomcatの起動でエラーを吐いているのでエラー内容を見て対処しましょう。たぶんClassNotFoundだと思うのでライブラリのクラスパス設定か、web.xmlあたりの設定ミスです。

今回はサーバ編のGETのみですが、結構簡単に組めて楽しいので
そのうちPOSTやらJSON使ってみたりとかまで書くかもしれません。

ちなみにRESTfulなWebサービスを作るライブラリはJersey以外にも存在します。Apache CXFあたりが有名かもしれません。
ただ、私が会社でやってみたときは何故かうまくいきませんでした。。。

 

コメントを残す

メールアドレスが公開されることはありません。