Jettyを開発用サーバーとして起動する方法として、以前に2つの方法を紹介しました。1つ目は設定用のXMLファイルを用意して、Javaアプリケーションとして起動する方法です。2つ目は、Jetty5/6用のWTPプラグインを使用する方法です。
今回は1つ目の方法と似ているのですが、設定ファイルなしで起動する方法を紹介します。
簡単に言えば設定ファイルで設定している内容と同じことをプログラムで実装し、組み込みサーバとしてJettyを利用する方法です。起動の早さにはびっくりです。
組み込みサーバとして起動する方法
まずはJettyのライブラリを「ユーザー・ライブラリ」として登録しておきます。
この作業は必須ではありませんが、JettyのJarファイルをビルドパスに登録するさいに、ライブラリ指定するだけでよいので楽です。
[ウィンドウ]-[設定]で、設定ダイアログを開き、[Java]-[ビルドパス]-[ユーザー・ライブラリ]を選択します。
[新規]ボタンから、ユーザーライブラリ名を入力し、適当にJETTYとでもします。
[JARファイルの追加」ボタンからJARファイルを追加します。Jettyのインストールフォルダ/libにある以下のJARファイルを追加します。
- jetty-*.jar
- jetty-util-*.jar
- servlet-api-*」.jar
また必要に応じて、libフォルダ配下のほかのJARファイルも追加します。通常はJSP使うでしょうから、jsp-2.1配下のJARファイルも追加します。
VelocityやWicketのようにJSPを使わない場合には不要です。
次に動的Webプロジェクトで作成します。ただのJavaプロジェクトでもいいのですが、web.xmlを自動作成してくれたり、フォルダ構成を作成してくれるので、動的Webプロジェクトの方が都合が良いです。
ターゲットランタイムは「なし」でOKです。
作成したプロジェクトには、先ほど作成したユーザーライブラリ「JETTY」を追加します。
デプロイはしてくれないので、WebContent/WEB-INF/classesフォルダを作成し、そこにビルド後のクラスが生成されるように出力フォルダーを設定します。
最後に、Jetty組み込みサーバとして動作するメインクラスを作成します。
新規クラスで、こんなクラスを作成します。
サンプルソースコード
public class JettyRun {
public static void main(String[] args) throws Exception {
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(8080);
Server server = new Server();
server.setConnectors(new Connector[] {connector});
WebAppContext web = new WebAppContext();
web.setWar("WebContent"); //WARフォルダの指定
web.setContextPath("/JettyRunTest"); //コンテキストパス
server.addHandler(web);
server.start();
server.join();
}
}
Webコンテナとして動作するための最低限の設定をしたものです。このクラスをJavaアプリケーションとして起動するだけで、瞬時にサーバーが起動します(ほんとに一瞬で起動する)。デバッグ実行もできます。
Javaアプリケーションとして動作しているので、停止する時はEclipseからプロセスを終了します。
まとめ
もともとJettyは組み込みサーバとしても使えるような設計になっているので、Webアプリ作成であっても、サーバーごと作成して配布するっていうのも、ポータブルでいいかも知れません。
「設定ファイルなしで起動する方法」への1件のフィードバック