Jerseyでwebアプリ作成

## 作業環境
- Windows 7 32bit
- Eclipse 4.3 Keplar

## セットアップ
### maven
#### mavenダウンロード
- [Apache maven download](http://maven.apache.org/download.cgi)
- ダウンロードしたBinary zipを適当なフォルダに保存＆解凍

### mavenインストール
- ダウンロードしたMavenのbinフォルダを環境変数Pathに追加する
- 環境変数 JAVA_HOME がなければ追加する
- JAVA_HOMEのパスはJDKのルートまで（binの1つ上）

### maven動作確認
コマンドプロンプトを起動し、以下を実行

```
mvn -v
```

以下のような出力が出てくれば、mavenのインストールは出来てる。

```
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-18 00:22:22+0900)
Maven home: C:\workspace\java\apache-maven-3.1.1\bin\..
Java version: 1.7.0_40, vendor: Oracle Corporation
Java home: C:\workspace\java\jdk\jdk7u40\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"
```

エラーが出てくる場合は、Pathが通ってないか、JAVA_HOMEの設定でミスってるので再確認する。

### Jerseyサンプルを取得

参考URL　本家のサイト
[Jersey download](https://jersey.java.net/download.html)

以下は適当に日本語に訳＆略して記載したもの。

ここからが本番。Mavenを使ってJerseyのサンプルプロジェクトを取得する。
コマンドラインから以下を実行
（1行で実行。うまくいかない場合は\を削除して1行にして実行してみる）

```
mvn archetype:generate -DarchetypeGroupId=org.glassfish.jersey.archetypes \
    -DarchetypeArtifactId=jersey-quickstart-webapp -DarchetypeVersion=2.4.1
```

うまく実行できたら、インタラクティブモードで色々聞かれるので
自分のプロジェクトに合わせて答えを入力していく。

groupId : 組織を識別する名前
artifactId : プロジェクトの識別する名前
version : バージョンはデフォルトで良ければそのままEnterキーを押す
package : プロジェクトのルートパッケージ名

artifactIdで付けた名前のフォルダが作成される。
後でEclipseにインポートする時にも、この名前でプロジェクトが作られるので、
プロジェクト名としてわかりやすい名前を付ける。

たとえば、会社名がabc社で、通常Javaの開発にjp.co.abccorpをパッケージ名として使っていて、
プロジェクト名をsample-web-appにする場合は以下のような感じ。

```
Define value for property 'groupId': : jp.co.abccorp
Define value for property 'artifactId': : sample-web-app
Define value for property 'version':  1.0-SNAPSHOT: :（Enterキー）
Define value for property 'package': jp.co.abccorp.sample
```

1行ずつインタラクティブに聞いてくるので、: の後を自分の環境にあわせて記入する。

### mavenでコンパイル、実行可能ファイルを作成

ダウンロードしたサンプルの動作確認をする。
まずはコマンドラインのmavenツールを使ってみる。

参考サイト　本家のチュートリアル
[Jersey - Getting started Chapter 1  Creating a JavaEE Web Application](https://jersey.java.net/documentation/latest/getting-started.html#new-webapp)

実行方法が本家のチュートリアルに書いてある。
先ほどダウンロードしてきたフォルダに移動して、（移動しないとpom.xmlが無いのでmavenのコマンドを実行できない）

```
cd sample-web-app
mvn clean package
```

実行すると、targetフォルダが作成されて中にsample-web-app.warファイルが出来る。

### Tomcatで実行してみる

（Tomcat単体起動でのデプロイを試したくなければスキップしてOK）

- Tomcatのホームにある、webappフォルダの下にsample-web-app.warをコピーする
- Tomcat起動
- ブラウザで localhost:8080/sample-web-app　を開く
（Tomcatのポートが違う場合は適時変更）

成功するとこんなサンプルページが見れる。

![jersey-sample-webapp.png](https://qiita-image-store.s3.amazonaws.com/0/5691/6ecb0a07-c98a-7c05-0175-49b8e656f0ee.png)

Jersey resourceのリンクをクリックすると、リソースへアクセスする。


### Eclipseにインポートする

- Project Exploer　を右クリックし Import を選択する
- Maven - Exsisting Maven Project を選択する

![eclipse_import.png](https://qiita-image-store.s3.amazonaws.com/0/5691/a686a9ed-c0f4-a24c-96d1-ab114f61ae72.png)

- Nextボタンクリック
- Root Directory で先ほどセットアップしたmavenプロジェクトのルートフォルダを選択し、インポートする

以上。

Mavenのターゲットでeclipseのプロジェクトに変換する機能があるが、それでインポートするとうまくいかない。
上記手順でインポートすると、Eclipseに含まれているm2eが自動変換してくれる。

### Eclipse上からTomcatを起動して動作確認

- インポートしたプロジェクトで、Webアプリとして実行できるソースをクリック（MyResouce.javaかindex.jsp）
- 右クリック　→ Run As...  → Run on Server
- サーバーを選んで実行
- EclipseのTomcat設定が出来てなければここでする