前回からの続きです。
Jettyの起動方法の2パターン(XML設定から起動と、Javaから起動)については、前回の記事「Jettyの起動まとめ:最小構成の起動設定」を参照してください。
今回は、前回では使えなかったJSPを使用可能にします。といっても最小起動構成ようの3つのJARファイルに加えて、JSP用のJARファイルをクラスパスに追加するだけです。
サンプル
JSPが使える起動設定
ServletとJSPが使用可能なサーバ。Webコンテナとしての機能を持っているので、一般的なWebアプリケーションを動作させることができます。JNDIリソースを参照したりすることは使用できません。
クラスパスに追加するJARファイルは、必要最小限の3つのJARファイル(jetty-x.jar, jetty-util-x.jar, servert-api-x.jar)に加えてJSP用のJARファイルを使用します。JSP用のJARファイルとは、Jettyホーム/lib/jsp-x.xフォルダにあるJARファイルです。
適用するJSPのバージョン(2.0とか2.1)を選んでどちらかのフォルダ内のJARファイルを使用します。分からなかったら新しい方(2.1)を選んどきましょう。
[XML設定の場合]
必要最小限の3つのJARファイルをlibフォルダに入れ、jsp-2.1フォルダをlibフォルダに置きます。start.jarと同じフォルダにlibフォルダを配置します。
こんな感じでファイルを配置します。
[myfolder]
+- config.xml
+- start.jar
|
+- [lib]
+- jetty-x.jar
+- jetty-util-x.jar
+- servlet-api-.x.jar
|
+-[jsp-2.1]
+- ant-x.jar
+- core-x.jar
+- jsp-x.jar
+- jsp-api-x.jar
実行時には、コマンドラインから、
java -jar start.jar config.xml
の形式で実行します。
XML設定の場合はクラスパスにstart.jarだけを設定すればよいので楽です。start.jarから起動されるアプリが、その他のJARを読み込んでくれるためです。Javaで設定する場合はクラスパスへの追加を自分でやらなければなりません。
config.xmlの作成の仕方は前回と同じですが、サンプルを作成しました。
Tomcatのjsp-examplesアプリケーションで動作確認しましたが、このアプリを動作させる場合には1つ注意が必要です。Tomcat付属のjsp-exmaplesは、web.xmlで「JSPファイル→JSPをコンパイルしたクラス」にマッピングしているのですが、これは不要なので削除する必要があります。
JSPをコンパイルしてできたclassをServletとして登録していますが、拡張子jspでJSPとして動作するようになっているので、Servletとして登録する必要はないからです。さらにJSPからコンパイルしてクラスが、どのようなパッケージになるか決まっていないのに、勝手にorg.apache.jsp.jsp2.tagfiles.hello_jspなんて完全修飾名を決め打ちしてしまうとTomcat以外で動かなくなってしまうのです。
[Java設定の場合]
Java設定の場合もクラスパスにJSP用のJARファイルを追加するだけなので、ソースコードの書き方は前回と同様です。
(前回紹介した組み込みJettyサーバーのサンプルソース)
XML設定の時のようにjsp-2.1フォルダを置いても、勝手にクラスパスに追加されたりはしないので、実行時に追加する必要があります。