Jettyはサーバ組み込みのアプリケーションとして利用しやすい設計になっていますが、起動のための設定がイマイチ分からないので、これから何回かかけてまとめていこうと思います。Jettyはいろいろな設定で起動することができるので、ここで紹介するサンプル以外にも色々な方法があると思います。
今回紹介する「最小構成の起動設定」はServletのみが使用可能です。JSPすら動かないので注意してください。
「JSPも動かないのに使い物になるのか?」と思うかもしれませんが、VelocityやWikcetなどのフレームワークではJSPを使用しないのでJSPなしでもWebアプリは作成可能です。
起動設定
起動方法は2つのパターンがあります。
- XMLで設定
jetty用のconfig.xmlを記述し、start.jarからからconfig.xmlを指定して起動する方法 - Javaで設定
設定をJavaコードで記述する方法
完全な組み込みサーバの場合は、方法2.の方がサーバや設定自体も組み込むことができるので便利。たとえばサーバとして動作するServletなどが作ることができます。
方法1.の場合、XMLで記述するといっても、よく見るとJavaのコードでやっていることと同じことをXMLで書いているのが分かります。
newしてsetしたりaddしたりする処理をXMLで書くだけ。どちらかの記述方法が分かればもう一方に変換するのは簡単です。
サンプル
最小構成の起動設定
Servletのみが使用可能な超軽量サーバ。JSPは使えない。
WebサービスやAjaxリクエストのサービス提供のために起動するといった使い方が考えられます。必要最小限の3つのJARファイル(jetty-x.jar, jetty-util-x.jar, servert-api-x.jar)を使用します。これらのJARファイルはJettyホーム/libフォルダにあります。
[XML設定の場合]
必要最小限の3つのJARファイルをlibフォルダに入れて、start.jarと同じフォルダにlibフォルダを配置します。
こんな感じでファイルを配置。
[myfolder]
+- config.xml
+- start.jar
|
+- [lib]
+- jetty-x.jar
+- jetty-util-x.jar
+- servlet-api-.x.jar
実行時には、コマンドラインから、
java -jar start.jar config.xml
の形式で実行します。
サンプルとして、「1つのWebアプリケーション(WAR)を指定したconfig.xml」を作成。
Tomcatに付属のservlets-examplesアプリケーションを指定して起動。コンテキストパスは/hogeで設定しているので、http://localhost:8080/hogeで動作確認できます。細かい設定はなにも書いていないのでかなりシンプル。
次に「WebAppフォルダを指定したconfig.xml」を作成。JSPは動作しないのでTomcatのWebAppフォルダを指定しても動かないので注意してください。servlets-examplesとtomcat-docsだけのWebAppフォルダで動作確認しました。
この設定ファイルにはWebアプリケーションのパスをフルパスで直接記述しているがシステムプロパティを参照することもできます。
<set name="war"><systemProperty
name="my.home" default="."/>/servlets-examples</set>
のように記述して
jetty -Dmy.home=c:/foo/bar/myhome start.jar config.xml
のように実行します。
[Java設定の場合]
上と同じことをJavaで記述し、このクラスをJavaアプリケーションとして起動するパターンです。
起動する際には、必要最小限の3つのJARファイル(jetty-x.jar, jetty-util-x.jar, servert-api-x.jar)をクラスパスに追加する必要があります。start.jarやconfig.xmlは不要です。
サンプルとして、1つのWebアプリケーション(WAR)を起動するJavaアプリケーションを作成しました。前述の「1つのWebアプリケーションを指定したconfig.xml」と見比べれば分かるように、XMLで書いてある内容をJavaで記述しているだけです。
WebAppフォルダを指定して起動するJavaアプリケーションのサンプルも作成しました。
さらに、起動可能なサーブレットのサンプルも作成。メインメソッドを持ったサーブレット自体がサーバーとして動作します。これこそ組み込みサーバー。
まとめ
Jettyの設定用XMLファイルは、結局のところJavaコードをXMLで可能にしているだけです。
JavaアプリケーションからJettyを利用することで、簡単にサーバーを組み込むことができます。
次回は、JSPを使用可能にしたサンプルを作成する予定です。