2013年8月20日火曜日

【Java】Jersey2.2+Tomcat+Eclipse+mavenでAPI開発環境を構築

■環境
Windows 2008R2
JDK 1.6_33
Tomcat 7.0_42
maven 3.0.4
Jersey 2.2
Eclipse 3.8

■mavenプロジェクトの作成
新規プロジェクトの作成でmavenプロジェクトを作成します




ArtifactIdに「maven-archetype-webapp」を選択します


GroupIdおよびArtifactIdを適当に設定します
ここで設定した情報はそのままjavaのパッケージ名として使われます


デフォルトで作成するとJavaEE5がJavaのコンパイラとして設定されているので
ビルドパスの設定からJavaの1.6以上を設定します

■pom.xmlの設定(jerseyのインストール)
pom.xmlにjerseyの設定を記載してjerseyのライブラリを使えるようにします
最新版は2.2になっているので2.2を利用しますpom.xmlに以下の記述を記載します
どうやら2.系からはglassfishプロジェクトとして配布されているのが最新版のようです
1.系はcom.sum.jerseyとして配布しているので注意しましょう
また後述しますが、web.xmlに記載する際のパッケージ名も異なっているので注意しましょう
<dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-server</artifactId>
     <version>2.2</version>
</dependency>
<dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet-core</artifactId>
      <version>2.2</version>
</dependency>
記載したら一回maven cleanを実行しておきましょう
エラーがでなければインストール(リモートリポジトリからのJarダウンロード)は成功です

■パッケージの作成
src/main/java配下にパッケージを作成します
今回はGroupIdおよびArtifactIdで指定した情報をそのままパッケージ情報とします
※「com.kakakikikeke.sample.jersey」という風になります

■サンプルクラスの作成
先ほど作成したパッケージ配下にSampleServiceクラスを作成します
内容は以下の通りです
package com.kakakikikeke.sample.jersey;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;

@Path("/sample")
public class SampleService {

     @GET
     @Path("/{param}")
     public Response getMsg(@PathParam("param") String msg) {
          String output = "Jersey say : " + msg;
          return Response.status(200).entity(output).build();
     }

}
/sample以下のパスを取得して表示します
ステータスコードは200番で返却します

■web.xmlの設定
Tomcatのコンテナとして動作させるために設定を追加します
<web-app>
 <display-name>Archetype Created Web Application</display-name>
 <servlet>
  <servlet-name>jersey-serlvet</servlet-name>
  <servlet-class>
   org.glassfish.jersey.servlet.ServletContainer
  </servlet-class>
  <init-param>
   <param-name>jersey.config.server.provider.packages</param-name>
   <param-value>com.kakakikikeke.sample.jersey</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
 </servlet>

 <servlet-mapping>
  <servlet-name>jersey-serlvet</servlet-name>
  <url-pattern>/api/*</url-pattern>
 </servlet-mapping>
</web-app>
Jersey2.2で注意しなければいけいのは
org.glassfish.jersey.servlet.ServletContainer

jersey.config.server.provider.packages

Jersey1.系ではここの指定パッケージ名が違いますので注意してください

■warファイルの作成
プロジェクトを右クリックし「Run As」から「Maven Build...」を選択
実行の新規ウィザードが立ち上がるのでGoalsに「package」を入力
ApplyしRunで実行する
成功するとtargetフォルダ配下にjersey.warが作成されます

■Tomcatの起動とデプロイ
別途インストールしてあるTomcatを起動しデプロイを実施します
デプロイは直接サーバに配置しても良いし、管理画面からアップロードしても問題ありません
デプロイが完了したら以下に問い合わせてみましょう

http://localhost:8080/jersey/api/sample/hello

「Jersey say : hello」と返ってくれば成功です

■参考サイト

0 件のコメント:

コメントを投稿