Windows2000 + Tomcat 4.1.12 + Apaceh 連携
パート5 / 連携メモ(2002/12/17)
Tomcat をインストールするとサンプルのサーブレット(/examples)がインストールされますが、実際には目的毎にディレクトリを作成し Webアプリケーションを作成していくと思います。ここでは、新規にディレクトリにサーブレットを作成する方法を紹介します。
1.Tomcat をインストールしたディレクトリ以下に、\webapps のディレクトリがあります。この下に新規にディレクトリを作成しサーブレットを動作させるためのディレクトリ構成(\WEB-INF, \WEB-INF\classes, \WEB-INF\lib)を作成します。新規ディレクトリを \javahello としました。
2.ディレクトリの作成が終了したら終わったら、以下の手順に従ってください。
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>
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」にアクセスしてみましょう。
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