Jetty でシンプルなプロジェクトを作成してみた

公開日: : 最終更新日:2015/09/28 Java ,

プロトタイプを作成するなら Tomcat よりも Jetty のほうがさらっと出来そうだなぁ、と今さら思い至ったので Jetty を動かすサンプルを作成してみた。

目次

1. 作成したサンプルプログラム

サンプルは Github に登録済み。

2. 使用したソフトウェアのバージョン

Java と Maven のバージョンは次の通り。

$ java -version
java version "1.7.0_11"
Java(TM) SE Runtime Environment (build 1.7.0_11-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
$ mvn -v
Apache Maven 3.0.4 (r1232337; 2012-01-17 17:44:56+0900)
Maven home: C:\XXX\maven-3.0.4
Java version: 1.7.0_11, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_11\jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"

Servlet API のバージョンは pom.xml にも書いてあるが、次のものを使用。

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.0.1</version>
</dependency>

3. Jetty の設定

Jetty の設定は pom.xml に書く。
起動できれば OK なので設定内容は次の通り。

<build>
  <plugins>
    <plugin>
      <groupId>org.mortbay.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <configuration>
        <scanIntervalSeconds>10</scanIntervalSeconds>
        <webApp>
          <contextPath>/jetty-simple-sample</contextPath>
        </webApp>
      </configuration>
    </plugin>
  </plugins>
  ...
</build>

3-1. scanIntervalSeconds

ここに指定した値をインターバルとして、プログラムに変更が入れば自動的に再デプロイしてくれる。

3-2. contextPath

この Web アプリのコンテキストパスを指定する。
デフォルトは artifactId が設定される。

4. サーブレットのアノテーション

Servlet API に 3.0.1 を使っているので、web.xml ではなくサーブレットのアノテーションに設定をしてみた。

@WebServlet(name = "AppServlet", urlPatterns = {"/app"})
public class AppServlet extends HttpServlet {

    private static final long serialVersionUID = -4475969575655499831L;

    /* (non-Javadoc)
     * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.getWriter().print("Hello, jetty-simple-sample");
    }

}

“/app” には AppServlet がマッピングされる、という設定。

4-1. 動作確認方法

プロジェクトは Maven で作成したので、ビルド → Jetty の起動は次のコマンドを実行すればOK。

@WebServlet(name = "AppServlet", urlPatterns = {"/app"})

$ cd $PROJECT_HOME
$ mvn eclipse:eclipse -DdownloadSources=true # Eclipse のプロジェクトにしたい場合に実行する
$ mvn jetty:run
:
[INFO] Started Jetty Server
[INFO] Starting scanner at interval of 10 seconds.

これで Jetty が起動するので、ブラウザからアクセスする。
このサンプルの場合は次の URL にアクセスする。

  • http://localhost:8080/jetty-simple-sample/app

お手軽でいい感じ。

5. 更新履歴

  • 2013/06/05: 初版作成
  • 2015/09/28: 表示崩れを修正

Googleアドセンス用(PC)

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

関連記事

no image

Spark を使って JSON を返すシンプルな API を書いてみた

必要に迫られてモックの API を作成することになった。 大した工数を割けないので使ったことのある

記事を読む

no image

Functions#compose() を使って Function を合成するサンプル(Java8 との比較付き)

Java8 と GoogleGuava の Function について コードの違いを書いた。 その

記事を読む

no image

ファイルに関するユーティリティ

ファイルに関するスニペットをいくつか書いた。いつかコピペする日が来ると思うのでメモしておく。 作成

記事を読む

no image

サーブレットでクラスパス上にあるプロパティファイルを参照するスニペット

よく使うわりにはいつも調べているのでいい加減メモすることにした。 "app.proper

記事を読む

no image

Stream#filter()で絞り込みmap()で処理するコードスニペット

Java8 から導入された Stream API も少しずつ慣れてきて、「そういえばこういうパターン

記事を読む

no image

プロセスの起動を確認するプログラム

プロセスが起動しているかを確認するプログラムを Java で書いてみました。Excel のプロセス確

記事を読む

icatch-3361b5e1-resized

Optional型の変数にget()とifPresent()は使わない

Java8 から導入された Optional を勉強するため、過去にプライベートで書いたコードに O

記事を読む

GradleLogoReg

Gradle で Java アプリのプロジェクトを作成して Eclipse にインポートするまでの手順

Mac に SDKMAN! を使って Gradle をインストールしたので、実際にプロジェクトを作成

記事を読む

no image

ファイルの拡張子が JPG であるかを問い合わせるスニペット

特に目新しいこともないが、同じようなことをする機会があるかもしれないのでメモ。Gist にも登録済み

記事を読む

no image

Java から VBScript を使って Excel を印刷する

背景 Java のデスクトップアプリを作成していたときの要件に「Excel で作成された帳票を印刷

記事を読む

Googleアドセンス用(PC)

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


5 + = 八

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Googleアドセンス用(PC)

icatch-jersey_multi_pathparams
Jerseyの@PathParamはスラッシュの間に複数指定できる

http://hoge-api/user/{id}.{format}

icatch-vagrant_box_customize
VagrantのBoxファイルをカスタマイズして独自のBoxファイルを作成する

配布されている Vagrant の Box ファイルを使って検証環境を

icatch-2015-006-1
バリデーションチェックにJava8のOptionalを使ってスマートに書く(自分比)

Web アプリのバリデーションチェックにアノテーションを使うことが増え

icatch-2015-005-1
ユニットテストの偏りを防ぐ命名規則の付け方

ユニットテスト名に以下の命名規則を付けるようにして二ヶ月ぐらい経った。

icatch-2015-004-1
Vagrantで起動したCentOS上のOctopressをホストOSから確認する設定

タイトルの通りだが、Vagrant を使って起動した CentOS に

→もっと見る

PAGE TOP ↑