Web Applcation Deployment

Revised: 25th/Nov./2002

サーバ・サイドで動作するJavaアプリケーションをウェブ・アプリケーションと呼びます。その基本はサーブレットです。TomcatのようなJavaアプリケーション・サーバがサーブレットを認識して実行できるようにすることを配備(deploy)と呼びます。ここでは、Tomcat 4.1.12にサーブレットを配備する手順を紹介します。

尚、本節では標準的な手法を詳しく見ていきますが、次節では本節で照会する手順を含め、4種類の配備手順をチュートリアル式に紹介しています。

Main Steps to Create a Web Application

Tomcat にウェブ・アプリケーションを配備する標準的な手順は次の4ステップになる。

  1. ウェブ・アプリケーションを格納するディレクトリを作る
  2. /WEB-INF/web.xml を編集する
  3. Tomcatの構成ファイル $CATALINA_HOME/conf/server.xml を編集する
  4. 構成ファイルの変更を反映するためにTomcatを再起動する

次項から各々について見ていき、最後に動作確認することにする。

Directory Hierarchy

Tomcat は Sun Microsystems の Servlet 仕様、JSP 仕様の reference implementation です。すなわち、Tomcat に準拠する製品が Servlet/JSP サポートを謳えるのです。逆に言うと、Tomcat 上で動作するアプリケーションは Servlet/JSP 仕様に準拠している必要があります。Servlet 仕様には、コーディングの規格だけでなく、それをアプリケーション・サーバで稼動させるためのディレクトリ構成も決められています。ウェブ・アプリケーションは特定のディレクトリ階層を持っていなければならないのです。Tomcat から公開されている Tomcat 4.1 の文書を元に次のようなディレクトリ構成になります。

ドキュメント・ルートはどこに作ってもかまいません。例えば、 C:\java\DocRoot などのように作り、その配下に上記のディレクトリ構造を作ります。特に、/WEB-INF と /WEB-INF/classes は最初に作っておいたほうが良いでしょう。

C:\java\DocRoot\WEB-INF\classes
図:C:\java\DocRoot\WEB-INF\classes

web.xml の編集

クライアントがサーブレットにアクセスできるように、デプロイメント・デスクリプタ web.xml を作成/編集します。次は、サーブレット HelloWorld.class/WEB-INF/classes/HellWorld.class に存在する場合の例です。次のソースコードをテキスト・エディタで作成してください。場所はドキュメントルート配下の /WEB-INF/web.xml です。

C:\java\DocRoot\WEB-INF\web.xml
図:C:\java\DocRoot\WEB-INF\web.xml
<?xml version="1.0" encoding="Shift_JIS"?> 

<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd"> 

<web-app>
	<servlet> 
		<servlet-name>SvltName</servlet-name>     <!-- 任意のサーブレット名 -->
		<servlet-class>HelloWorld</servlet-class> <!-- サーブレットクラス -->
	</servlet> 
	<servlet-mapping> 
		<servlet-name>SvltName</servlet-name> 
		<url-pattern>/servlet/Wellcome</url-pattern> <!-- 任意のアクセス・パス -->
	</servlet-mapping> 
</web-app>

「任意のアクセス・パス」としたのは、クライアントがブラウザから URL を要求するときのパスになります。このドキュメント・ルートが /webAppl に設定されるとすれば、サーブレット HelloWorld を要求する URL は次のようになるのです。

http://localhost:8080/webAppl/servlet/Wellcome

server.xml の編集

Tomcat が上で作ったドキュメント・ルートを認識できるように、構成ファイル server.xml を編集します。

Tomcat のインストール・ディレクトリを $CATASLINA_HOME と表記することにします。Windows + Tomcat 4.1.12 の場合、デフォルトのインストール・ディレクトリは C:\Program Files\Apache Group\Tomcat 4.1 になります。他のディレクトリにインストールした場合は $CATALINA_HOME を適宜読み替えてください。

server.xml は $CATASLINA_HOME/conf/server.xml にあります。このファイルをテキスト・エディタで編集します。

C:\Program Files\Apache Group\Tomcat 4.1\conf\server.xml
図:C:\Program Files\Apache Group\Tomcat 4.1\conf\server.xml

Tomcat 4.2.12 の場合、264 行目に次のコードが存在します。

       <!-- Tomcat Root Context -->
       <!--
          <Context path="" docBase="ROOT" debug="0"/>
        -->

この行の次の行に、新規に追加したいドキュメント・ルートを認識させるコードを挿入します。Tomcat 4.1.12 では 268 行目になります。改行、半角スペースは任意ですが、大文字と小文字は区別されるので、厳密に記述してください。次の例は、C:\java\DocRoot に作成したドキュメント・ルートに対して、ブラウザから http://localhost:8080/webAppl でアクセスできるようにする場合の例です。ここで、 /webAppl をコンテキスト・ルートと呼びます。

       <!-- My Context Root: C:\java\DocRoot as /webAppl -->
          <Context path="/webAppl" docBase="C:/java/DocRoot" debug="0"
                 reloadable="true" crossContext="true" />

動作確認

HTML 文書の表示

動作を確認するために、上で作ってきたドキュメント・ルートに、次のコードを持つ index.html を置いて表示させて見ましょう。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" >
  <head>
    <meta http-equiv="content-type" content="text/html; charset=shift_jis" />
    <title>Hello, World!</title>
  </head>
  <body>
    <h1>Hello, World!</h1>
    <p>ウェブ・アプリケーションの世界へようこそ!これはサンプル・ドキュメントです。</p>
  </body>
</html>

保存時に文字コードが選べれば Shift_JIS を選択してください。

Tomcat を起動し、ブラウザで表示させてみます。Tomcat 起動済みの場合でも、server.xml, web.xml の変更を反映させるためには、再開始が必要です。

"Start Tomcat" アイコンから起動すると、次のようなコマンド・プロンプトが開きます。

Start Tomcat の実行結果
図:Start Tomcat の実行結果

ブラウザから次の URL を要求してください。実際には、アドレス欄に以下の URL を入力して enter キーを押してください。

http://localhost:8080/webAppl/index.html

無事に HTML 文書が表示されれば成功です。ドキュメントルート配下にサブディレクトリを自由に作って動作を確認してください。例えば、ドキュメントルート配下の /subDir/myDoc.html へのアクセスは "http://localhost:8080/webAppl/subDir/myDoc.html" になります。ここに webAppl は server.xml で設定したコンテキスト・ルートです。

サーブレットの実行

次に WEB-INF/classes に次のコードを持つ HelloWorld.java を作成し、コンパイル/実行してみましょう。

import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse res)
	        throws ServletException, IOException {
		// 送信文字コードのセット
		res.setContentType("text/html; charset=Shift_JIS");
		// 出力ストリームの取得
		PrintWriter out = res.getWriter();

		String title = "Hello World!";
		Date date = new Date();

		// 出力ストリームへの書き込み
		out.println("<html lang=\"ja\">");
		out.println("<head><title>" + title + "</title></head>");
		out.println("<body>");
		out.println("<h1>" + title + "</h1>");
		out.println("<p>現在時刻:" + date + "</p>");
		out.println("</body></html>");

		// 出力ストリームのクローズ
		out.close();
	}
}

次のコードは、 Windows のコマンド・プロンプトでの、上記の HelloWorld.java のコンパイルです。

C:\>cd java\DocRoot\WEB-INF\classes

C:\java\DocRoot\WEB-INF\classes>javac -classpath "C:\Program Files\Apache Group\
Tomcat 4.1\common\lib\servlet.jar" HelloWorld.java

C:\java\DocRoot\WEB-INF\classes>

-classpath フラグの引数 "C:\Program Files\Apache Group\Tomcat 4.1\common\lib\servlet.jar" は、Tomcat と共に導入された server.jar への絶対パスです。インストール・ディレクトリを $CATALINA_HOME と書けば、"$CATALINA_HOME\common\lib\servlet.jar" になります。これはOSの環境変数 CLASSPATH にセットしておけば不要な部分となります。

設定の変更を反映するために、Tomcat を再起動します。

これで設定が反映されました。次の画像は、ブラウザから http://localhost:8080/webAppl/servlet/Wellcome を要求したときの実行結果です。

HelloWorld の実行結果
図:HelloWorld の実行結果


Copyright © 2002 SUGAI, Manabu. All Rights Reserved.