前回の記事で作成した REST アプリケーションを Jetty を動かします。Jetty に Jersey ライブラリを追加する手順、 作成した WAR ファイルをデプロイしてブラウザから動作確認するところまでを Windows 環境を例に説明していきます。
Jetty と Jersey… 名前が似ていて混乱してしまいそうですね。
- Jetty はサーブレットを動かすことができる Web コンテナ (アプリケーション ・ サーバー) です。
- Jersey は Java で REST を扱うための API である JAX-RS のリファレンス実装ライブラリです。
REST アプリケーション (WAR ファイル) の開発手順については以下の記事を参照してください。
JettyとJersey をダウンロードする
以下のサイトから Jetty の Windows 版をダウンロードします。
以下のサイトから Jersey モジュールをダウンロードします。
2018 年 6 月 25 日時点のバージョンは Jetty が 9.4.11、 Jersey が 2.27 でした。
ダウンロードした jetty-9.4.11+jre8u172-x64.zip
を C:\jetty-9.4.11
に展開します。他のフォルダーに展開した場合は適宜読み替えてください。
jaxrs-ri-2.27.zip
も展開して、 中に入っている lib
と modules
を C:\jetty-9.4.11
に上書きコピーします。
JettyでJAX-RS(Jersey)を有効にする
コマンドプロンプトを起動して、 C:\jetty-9.4.11
に移動します。
以下のコマンドを実行して JAX-RS (Jersey) を有効にします。
jaxrs-riを有効にするコマンドjetty.exe --add-to-start=jaxrs-ri
コマンドプロンプトC:¥jetty-9.4.11>jetty.exe --add-to-start=jaxrs-ri INFO : jaxrs-ri initialized in ${jetty.base}¥start.ini INFO : Base directory was modified
作成したWARファイルをデプロイして動かす
Jetty への Web アプリケーション配備はとても簡単です。Jetty の webapps
フォルダーに WAR ファイルをコピーするだけでデプロイ (配備) が完了します。
前回作成した myapp.war
を C:\jetty-9.4.11\webapps
フォルダーにコピーしてください。
これで準備は完了です。jetty.exe
を実行してサーバーを起動してみましょう。
Jettyを起動するコマンドjetty.exe
コマンドプロンプトC:¥jetty-9.4.11>jetty.exe 2018-06-25 20:43:25.911:INFO::main: Logging initialized @3525ms to org.eclipse.jetty.util.log.StdErrLog 2018-06-25 20:43:26.420:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended. See documentation at http://www.eclipse.org/jetty/documentation/current/startup.html 2018-06-25 20:43:26.549:INFO:oejs.Server:main: jetty-9.4.11.v20180605; built: 2018-06-05T18:24:03.829Z; git: d5fc0523cfa96bfebfbda19606cad384d772f04c; jvm 1.8.0_172-b11 2018-06-25 20:43:26.579:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:///C:/jetty-9.4.11/webapps/] at interval 1 2018-06-25 20:43:26.933:WARN:oeja.AnnotationParser:main: Unknown asm implementation version, assuming version 393216 2018-06-25 20:43:27.028:INFO:oeja.AnnotationConfiguration:main: Scanning elapsed time=93ms 2018-06-25 20:43:27.490:INFO:oejs.session:main: DefaultSessionIdManager workerName=node0 2018-06-25 20:43:27.491:INFO:oejs.session:main: No SessionScavenger set, using defaults 2018-06-25 20:43:27.493:INFO:oejs.session:main: node0 Scavenging every 660000ms 2018-06-25 20:43:27.569:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1f97cf0d{myapp,/myapp,file:///C:/Users/user/AppData/Local/Temp/jetty-0.0.0.0-8080-myapp.war-_myapp-any-4601389772720294532.dir/webapp/,AVAILABLE}{C:¥jetty-9.4.11¥webapps¥myapp.war} 2018-06-25 20:43:27.608:INFO:oejs.AbstractConnector:main: Started ServerConnector@2f1de2d6{HTTP/1.1,[http/1.1]}{0.0.0.0:8080} 2018-06-25 20:43:27.623:INFO:oejs.Server:main: Started @5234ms
最終行に Started
と表示されていれば起動完了です。
ブラウザーを起動して http://localhost:8080/myapp/api/hello
にアクセスします。
Hello, World!! と表示されれば成功です。コマンドプロンプトで Ctrl + C を押すと Jetty を停止することができます。
RESTアプリケーションとURLの関係
REST アプリケーションのリソース ・ メソッドがマッピングされる URL は以下のように決まります。
- リソース ・ クラスの
@Path
アノテーションにもパスを指定した場合、/api
と/hello
にもう一階層パスができます。
(おまけ)JettyをWindowsサービスとして登録する
Windows 版 Jetty は Windows サービスとして登録することもできます。Windows サービスへの登録には管理者権限が必要です。
サービスのインストール
JettyをWindowsサービスとして登録するコマンドjetty.exe -install
管理者: コマンドプロンプトC:¥jetty-9.4.11>jetty.exe -install jetty サービスをインストールしました。
サービスの開始
Jettyサービスを開始するコマンドnet start jetty
管理者: コマンドプロンプトC:¥jetty-9.4.11>net start jetty jetty サービスを開始します. jetty サービスは正常に開始されました。
サービスの停止
Jettyサービスを停止するコマンドnet stop jetty
管理者: コマンドプロンプトC:¥jetty-9.4.11>net stop jetty jetty サービスを停止中です. jetty サービスは正常に停止されました。
サービスの削除
Jettyサービスの登録を解除するコマンドjetty.exe -remove
管理者: コマンドプロンプトC:¥jetty-9.4.11>jetty -remove jetty サービスを削除しました。
次回は Jetty と Eclipse を連携させる方法を紹介したいと思います。