Windows2000 + Tomcat 4.1.12 + Apaceh 連携 パート5 / 連携メモ(2002/12/17) 
 

Webアプリケーション(サーブレット)の追加

Tomcat をインストールするとサンプルのサーブレット(/examples)がインストールされますが、実際には目的毎にディレクトリを作成し Webアプリケーションを作成していくと思います。ここでは、新規にディレクトリにサーブレットを作成する方法を紹介します。

  サーブレット編

ディレクトリ構成

1.Tomcat をインストールしたディレクトリ以下に、\webapps のディレクトリがあります。この下に新規にディレクトリを作成しサーブレットを動作させるためのディレクトリ構成(\WEB-INF, \WEB-INF\classes, \WEB-INF\lib)を作成します。新規ディレクトリを \javahello としました。

2.ディレクトリの作成が終了したら終わったら、以下の手順に従ってください。

連携手順(Tomcat編)

1.上記で作成した \javahello\WEB-INF のディレクトリ以下に web.xml ファイルを作成します。このファイルは、サーブレットの初期値情報や、EJBの使用等などの環境設定を記述します。まだな〜〜んにもしないので、以下の単純な内容で作成しておいてください。

<?xml version="1.0" encoding="ISO-8859-1"?>

<!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>
</web-app>

3.サーバ構成情報ファイル server.xml に以下の記述を追加します。(デフォルトのインストール先 C:\Program Files\Apache Group\Tomcat 4.1\conf の下にあります)

<Context path="/javahello" docBase="javahello" debug="0"
   reloadable="true" crossContext="true">
     <Logger className="org.apache.catalina.logger.FileLogger"
     prefix="localhost_javahello_log." suffix=".txt"
     timestamp="true"/>
</Context>

4./servlet/*にアクセスがあった場合、サーブレットを実行できる様に web.xml ファイルのマッピング情報を有効にします。(デフォルトでは、無効になっているのでコンメント部分を削除してください)

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

連携手順(Apache編)

1.httpd.conf ファイルに以下の記述を追加します。(デフォルトのインストール先 C:\Program Files\Apache Group\Apache\conf の下にあります)。これは javahello ディレクトリアクセスが行われた場合に mod_webapp が Tomcat にそのデータを渡す定義を追加するのです。

<IfModule mod_webapp.c>
   WebAppConnection warpConnection warp localhost:8008
   WebAppDeploy examples warpConnection /examples/
   WebAppInfo /webapp-info/

   WebAppDeploy javahello warpConnection /javahello/
</IfModule>

確認手順

1.上記の定義が終了したら一度マシンを再起動します。(何故か Tomcat が資源を解放しないときがある)

2.適当な場所で、以下のJavaプログラムを入力します。ファイル名を hello_servlet.java とします。

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

public class Hello_Servlet extends HttpServlet {
   public void service(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException {

      response.setContentType("text/html; charset=Shift_JIS");
      PrintWriter out = response.getWriter();

      out.println("<html>");
      out.println("<head>");
      out.println("<title>Hello Servlet</title>");
      out.println("</head>"); 
      out.println("<body>");
      out.println("Hello World"); 
      out.println("</body>");
      out.println("</html>");
   } 

3.javac コマンドを使用しコンパイルします。コンパイルが正常に終わると hello_servlet.class ができているハズです。

<!-- mura comment-del -->
<Service name="Tomcat-Apache">
   <Connector className="org.apache.catalina.connector.warp.WarpConnector"
      port="8008" minProcessors="5" maxProcessors="75"
      enableLookups="true" appBase="webapps"
      acceptCount="10" debug="0"/>
   <Engine className="org.apache.catalina.connector.warp.WarpEngine"
      name="Apache" debug="0">
      <Logger className="org.apache.catalina.logger.FileLogger"
         prefix="apache_log." suffix=".txt"
         timestamp="true"/>
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
   </Engine>
</Service>

4.エクスプローラを使って hello_servlet.class ファイルを、\javahello\WEB-INF\classes にコピーします。

確認手順

「http://localhost/javahello/servlets/hello_servlet」にアクセスしてみましょう。

その他(warファイルを作成する)

1.上記で作成した javahello をパッケージ化して他のマシンにもっていく準備をします(DOS窓で)。

C:\>cd "C:\Program Files\Apache Group\Tomcat 4.1\webapps\javahello"
C:\Program Files\Apache Group\Tomcat 4.1\webapps\javahello>jar -cvf javahello.war *

マニフェストが追加されました。
WEB-INF/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
WEB-INF/classes/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
WEB-INF/classes/HelloWorldServlet.class を追加中です。(入 = 899) (出 = 520)(42%
収縮されました)
WEB-INF/lib/ を追加中です。(入 = 0) (出 = 0)(0% 格納されました)
WEB-INF/web.xml を追加中です。(入 = 210) (出 = 172)(18% 収縮されました)

2.他のマシンで展開します。この場合、server.xmlへのContextタグの追加は不要らしいです。javahello.war は、ここ。

C:\>cd "C:\Program Files\Apache Group\Tomcat 4.1\webapps"
C:\Program Files\Apache Group\Tomcat 4.1\webapps>jar xf javahello.war