エンタープライズ:特集 | 2002/12/09 18:00:00 更新 |
Tomcatで知るJSP/サーブレットの基礎
第3回:Tomcatで動かすWebアプリケーションの仕組み (5/6)
サーブレットプログラムを実行する |
サーブレットの場合には、あらかじめJavaのソースファイルをコンパイルしておく必要があり、コンパイル済みのファイルを「WEB-INF/」サブディレクトリの下の「classes/」ディレクトリ下に置くという手順が必要だ。
まずはJavaのソースファイルを用意しよう。ここでは、リスト2に示す「hello.java」ファイルを利用する。このファイルは、どのディレクトリ下に置いても構わない。
リスト2■hello.javaファイル
import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.ServletException; public class hello extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // サーブレットのクライアントからの要求に応答する部分 // ContentTypeを設定する response.setContentType("text/html"); // 出力用のPrintWriterオブジェクトを得る PrintWriter out = response.getWriter(); // 出力する out.println("<HTML>"); out.println("<BODY>"); int i; for (i = 1; i <= 6; i++) { out.print("<H"); out.print(i); out.print(">Hello Servlet</H"); out.print(i); out.println(">"); } out.println("</BODY>"); out.println("</HTML>"); } } |
次に、リスト2のプログラムをコンパイルする手順だ。コンパイルするためには、J2SE SDKに含まれるJavaコンパイラ「javac」コマンドを使えばよい。
しかしリスト2では、サーブレットのためのクラスをインポート利用しているため、サーブレットのクラスの場所を「CLASSPATH」環境変数に設定しておかなければコンパイルに失敗してしまう。
Tomcatでは、サーブレット用のクラスが「/var/tomcat4/common/lib/servlet.jar」ファイルとして提供されている。そこで、コンパイルする前に次のように「CLASSPATH」環境変数を設定すればよい。
$ export CLASSPATH=$CLASSPATH:/var/tomcat4/common/lib/servlet.jar |
TIPS |
上記は、シェルがbashの場合である。cshの場合には、setenvコマンドを用いて、「setenv CLASSPATH $CLASSPATH:/var/tomcat4/common/lib/servlet.jar」のように指定する。 |
次に、リスト2のソースファイルを置いたディレクトリをカレントディレクトリにして、「javac」コマンドを使いコンパイルをしてみよう。
$ /usr/java/j2sdk1.4.0_01/bin/javac hello.java |
無事コンパイルが完了すると、カレントディレクトリに「hello.class」と付けられたclassファイルが作成されているはずだ。このファイルがサーブレットとして動作するコンパイルされたclassファイルとなる。このファイルを、先に用意しておいた「sample/」ディレクトリの「WEB-INF/classes/」ディレクトリ下に置く。手順は次の通りだ。
# mkdir /var/tomcat4/webapps/sample/WEB-INF # mkdir /var/tomcat4/webapps/sample/WEB-INF/classes # cp hello.class /var/tomcat4/webapps/sample/WEB-INF/classes |
次に、配置したclassファイルをTomcatに読み込ませるため、Tomcatデーモンを再起動させる。
# /etc/rc.d/init.d/tomcat4 restart |
以上で設定は完了だ。配置したサーブレットへは、次のURLでアクセスができる。
http://[サーバ名またはIPアドレス]/sample/servlet/hello |
TIPS |
URLには、クラス名のみを記述するが、.classの拡張子は指定しない。リスト2の例であれば、classファイルのファイル名は、hello.classであるが、URLには上記のようにhelloとだけ指定すればよい。 |
実行結果は、先に示したJSPの例とほぼ同じく、画像4のようになる。
画像4■リスト2の実行結果 |
このように、Tomcatでは配置したサーブレットは、「http://[サーバ名またはIPアドレス]:8080/パス名/servlet/クラス名」というURLでアクセスができる。
TIPS |
パス名は、server.xmlファイルのContextエレメントのpathアトリビュートに指定した名称だ。 |
TIPS |
標準では、サーブレットのパス先は「/パス名/servlet/クラス名」というURLになるが、ここでの「servlet」という部分は、web.xmlファイルを編集することで任意に変更することができる。 |
リスト1とリスト2を比較すると分かるように、サーブレットであるリスト2でクライアントに出力する場合、逐一PrintWriterオブジェクトのprintメソッドやprintlnメソッドを使わなければならない。このため、HTMLタグ出力には手間が必要となりプログラムも見づらくなる。第1回目の冒頭にて、サーブレットではユーザーインタフェースを提供せず、JSPに任せたほうがよい、とコメントしたのはこのような理由からだ。
「Administration Tool」を使い「server.xml」ファイルを編集する
ここまでの説明のように、Tomcatでは「server.xml」ファイルを編集することでコンテキストを作成し、Webアプリケーションを設定するという手順になる。server.xmlファイルはXML形式のファイルであり、Tomcatのドキュメントにはその設定書式が記載されている。
TIPS |
「server.xml」ファイルはTomcatに依存するが、「web.xml」ファイルはJ2EEで仕様化されている。「web.xml」ファイルの詳細については、http://java.sun.com/products/servlet/download.htmlからダウンロード可能な「Java Servlet Specification」を参照するとよい。 |
しかし、開発されたアプリケーションを配置するたびに「server.xml」ファイルを編集するのは面倒だろう。そこでTomcat 4.1では、WebブラウザからTomcatの設定編集が可能なツール「Administration Tool」が用意されている。
[大澤文孝,ITmedia]