エンタープライズ:特集 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のようになる。

fig7
画像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」が用意されている。

前のページ | 1 2 3 4 5 6 | 次のページ

[大澤文孝,ITmedia]