ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

サーブレット環境構築(Tomcat)

 FreeBSD上に、Javaのサーブレット環境の構築方法について説明します。

システム構成

 システム構成は、ApacheとTomcatを連携した構成となっています。
 Tomcatにも、簡易Webサーバ機能が付いていますが使いません。 Tomcatは、Apacheのモジュール(mod_jk)と通信することで、要求を受け付けます。

                 +-----------------------------+
+----------+   80|+----------+                 |
| ブラウザ |---->|| apache   |                 |
+----------+     || +--------+ 8007+----------+|
                 || | mod_jk |---->|  tomcat  ||
                 |+-+--------+     +----+-----+|
                 |                      |      |
                 |                 +----+-----+|
                 |                 |  servlet ||
                 |                 +----------+|
                 |             +---------------+
                 |             |     JDK1.3    |
                 +-------------+---------------+

インストール環境

PC本体PC-9821 Xv20
OSFreeBSD 4.2 Release
JDKJDK 1.1.8
XMLJAXP 1.1
メイクAnt 1.3
サーブレットTomcat3.2.1, ServletAPI 3.2
Apache1.3.19
Apacheモジュールmod_jk, mod_ssl

JDKのインストール、環境設定

概要

 FreeBSDに、JDK1.1をインストールします。 JDKは、Java Development Kitの略で、Javaのコンパイラなどの開発キットです。 javac java appletviewerなどのプログラムがあります。
 FreeBSDでは、JDK1.2やJDK1.3などは、サポートされていません。 ただ、面倒ですが、Linux版を動かす方法はあります。

入手元

 JDKの入手は、http://www.freebsd.org/のサイトからダウンロードできます。 JDKのサイズは、約12MBです。

URL http://www.freebsd.org/java/dists/
ファイル名 jdk1.1.8_ELF.V1999-11-9.tar.gz

インストール方法

 インストールは、展開するだけです。

unix# cd /usr/local
unix# gzip -cd pub/jdk1.1.8_ELF.V1999-11-9.tar.gz | tar -xvf -
unix# ln -s jdk1.1.8 jdk1.1

個人環境の設定方法

 各個人の.cshrcや.loginなどで、JDKのパスを追加します。 また、JAVA_HOMEとCLASSPATHを設定します。

setenv PATH "${PATH}:/usr/local/jdk1.1/bin"
setenv JAVA_HOME "/usr/local/jdk1.1"
setenv CLASSPATH "${JAVA_HOME}/lib/classes.zip"

 CLASSPATHの設定は、JDK1.2以降は不要になりましたが、JDK1.1では必要です。

XML環境(JAXP)のインストール、環境設定

 TomcatやAntなどの設定ファイルはXMLで記述されています。 そのため、JavaのXML環境が必要です。
 JavaのXML環境は、Sun MicrosystemsのJAXPを使います。

入手元

Java API for XML Processing 1.1 (JAXP)
  http://java.sun.com/xml/
    jaxp-1_1.zip  1.6MB

インストール方法

 インストールは、展開するだけです。

unix# cd /usr/local
unix# jar -xvf pub/jaxp-1_1.zip

個人環境の設定方法

 各個人環境に、CLASSPATHを設定します。

setenv XML "/usr/local/jaxp-1.1"
setenv CLASSPATH "${CLASSPATH}:${XML}/jaxp.jar"
setenv CLASSPATH "${CLASSPATH}:${XML}/crimson.jar"
setenv CLASSPATH "${CLASSPATH}:${XML}/xalan.jar"

 crimsonは、xercesよりもコンパクトな、XMLパーサです。 将来的には、xercesに統合されるという話があります。
 また、xalanは、XSLTプロセッサです。

Javaメイクツール(Ant)のインストール、環境設定

概要

 Javaベースのメイクツールとして、Antをインストールします。 Antは、Apacheプロジェクトによって提供されています。 Antでは、Makefileの変わりに、build.xmlというXMLファイルによって設定します。

入手元

 Antは、Apacheプロジェクトのホームページから、ダウンロードできます。

Java based build tool (Ant)
  http://jakarta.apache.org/builds/jakarta-ant/release/
    jakarta-ant-1.3-bin.tar.gz  2001/03/02  998KB

インストール方法

 インストールは、展開するだけです。

unix# cd /usr/local
unix# gzip -cd pub/jakarta-ant-1.3-bin.tar.gz | tar -xvf -

サーブレット環境(Tomcat)のインストール、環境設定

概要

 Tomcatは、サーブレットを開発するためのServlet APIなどを提供します。 ApacheなどのWebサーバでサーブレットを動作させるために必要です。

入手元

 Tomcatをインストールするためには、以下のモジュールが必要です。
 また、JDK、JAXP、Antなどをインストールしておく必要があります。

Tomcat 3.2.1
  http://jakarta.apache.org/builds/jakarta-tomcat/release/
    jakarta-servletapi-3.2-src.tar.gz  2000/12/12   99KB
    jakarta-tomcat-3.2.1-src.tar.gz    2000/12/12  899KB

インストール方法

 以下の手順でインストールします。
 まず、ServletAPIをメイクします。
 設定ファイルでは、Antが、../jakarta-antというディレクトリに格納されていることを前提になっていますので、jakarta-antのシンボリックリンクを作成します。
 BUILD SUCCESSFULと表示されれば、../dist/lib/servlet.jarなどができています。

unix# cd /usr/local/src
unix# ln -s /usr/local/jakarta-ant-1.3 jakarta-ant

unix# gzip -cd ../pub/jakarta-servletapi-3.2-src.tar.gz | tar -xvf -
unix# cd jakarta-servletapi-3.2-src
unix# sh ./build.sh dist
unix# ls -l ../dist/lib/servlet.jar

 次に、Tomcatをメイクします。
 配布先(tomcat.dist)は、build.xmlファイルで、/usr/local/jakarta-tomcatに設定します。
 Tomcat3.2.1では、JAXP-1.0.1使うことが前提となっていますので、build.xmlを修正する必要があります。 JAXP-1.0.1と、JAXP-1.1では、XMLパーサなどのファイル名も変更になっていますので、その修正も必要です。 これは、次期リリースには対応されることでしょう。
 Tomcat3.2.1では、ServletAPIが../jakarta-servletapiというディレクトリに格納されていることを前提になっていますので、jakarta-servletapiのシンボリックリンクを作成します。
 BUILD SUCCESSFULと表示されれば、/usr/local/jakarta-tomcatに、tomcatの環境ができています。

unix# cd /usr/local/src
unix# ln -s dist/servletapi jakarta-servletapi

unix# gzip -cd ../pub/jakarta-tomcat-3.2.1-src.tar.gz | tar -xvf -
unix# cd jakarta-tomcat-3.2.1-src

unix# vi build.xml
<property name="tomcat.dist" value="/usr/local/jakarta-tomcat"/>

<property name="jaxp" value="/usr/local/jaxp-1.1"/>

<copy tofile="${tomcat.build}/lib/crimson.jar"
    file="${jaxp}/crimson.jar"/>
<copy tofile="${tomcat.build}/lib/xalan.jar"
    file="${jaxp}/xalan.jar"/>

unix# sh ./build.sh dist
unix# ls -l /usr/local/jakarta-tomcat

Tomcatの動作確認方法

 Tomcatには、サーブレットの動作確認をするための簡易Webサーバが付いていて、デフォルトでは、8080ポートで自動起動されます。 8080ポートは、プロキシサーバで使うことが多いため、F14(トムキャット)にちなんで、8014ポートに変更します。
 この、簡易Webサーバを使って、サンプルのサーブレットを動かすことができます。

unix# cd /usr/local/jakarta-tomcat/conf
unix# vi server.xml
    <!-- Normal HTTP -->
    <Connector className="org.apache.tomcat.service.PoolTcpConnector">
        <Parameter name="handler"
            value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
        <Parameter name="port"
            value="8014"/>
    </Connector>

unix# cd ../bin
unix# ./startup.sh

 Lynxや、InternetExplorerや、NetscapeNavigatorなどのブラウザを使って、動作確認します。 ここでは、Unix上で動作するテキストブラウザであるLynxを使います。

unix# lynx http://localhost:8014/

 Apacheを使う場合などは、この簡易Webサーバは使いませんので、コメントアウトします。 コメントアウトした後は、Tomcatを再起動します。

unix# cd /usr/local/jakarta-tomcat/conf
unix# vi server.xml
    <!-- Normal HTTP -->
<!--
    <Connector className="org.apache.tomcat.service.PoolTcpConnector">
        <Parameter name="handler"
            value="org.apache.tomcat.service.http.HttpConnectionHandler"/>
        <Parameter name="port"
            value="8014"/>
    </Connector>
-->

unix# cd ../bin
unix# ./shutdown.sh
unix# ./startup.sh

Webサーバとサーブレットの連動(Apache+mod_jk)

概要

 mod_jkは、ApacheなどのWebサーバを、Java Server APIに対応するためのモジュールです。
 mod_jkは、Tomcatのソースパッケージに含まれています。

インストール方法

 以下の手順でインストールします。

unix# cd /usr/local/src
unix# cd jakarta-tomcat-3.2.1-src
unix# cd src/native/apache1.3
unix# cp Makefile.linux Makefile

unix# vi Makefile
OS=freebsd
APXS=/usr/local/apache/bin/apxs
	$(APXS) -DFREEBSD -I ../jk ${JAVA_INCL} -c -o $@ mod_jk.c $(SRCS)

unix# diff Makefile.linux Makefile
5c5
< OS=linux
---
> OS=freebsd
10c10
< APXS=/usr/sbin/apxs
---
> APXS=/usr/local/apache/bin/apxs
22c22
<       $(APXS) -I ../jk ${JAVA_INCL} -c -o $@ mod_jk.c $(SRCS)
---
>       $(APXS) -DFREEBSD -I ../jk ${JAVA_INCL} -c -o $@ mod_jk.c $(SRCS)

unix# make
unix# cp mod_jk.so /usr/local/apache/libexec/.

 Apacheの設定ファイルから、mod_jkの設定ファイルを呼び出し、以下の設定をします。 mod_jkの設定ファイルは、/usr/local/jakarta-tomcat/conf/mod_jk.conf-autoに作成されていますので、それを利用します。 設定が終わったら、Apacheを再起動します。

unix# vi /usr/local/apache/conf/httpd.conf
Include /usr/local/jakarta-tomcat/conf/mod_jk.conf-auto

mod_jkの動作確認方法

 TomcatのサーブレットのサンプルをApache+mod_jkで実行してみます。 Lynxや、InternetExplorerや、NetscapeNavigatorなどのブラウザを使って、動作確認します。

unix# lynx http://localhost/examples/servlets/
unix# lynx http://localhost/examples/jsp/

Tomcatの起動・終了方法

Tomcatの起動方法

 Tomcatを起動する場合は、以下のコマンドを使います。 Tomcatの起動は、Apacheの起動の前に行わなければなりません。 (Apacheの起動時に、mod_jkの設定を自動的に行うため)

unix# /usr/local/jakarta-tomcat/bin/startup.sh
unix# /usr/local/apache/bin/apachectl start

Tomcatの終了方法

 Tomcatを終了する場合は、以下のコマンドを使います。 Tomcatの終了は、Apacheの終了の後に、行います。

unix# /usr/local/apache/bin/apachectl stop
unix# /usr/local/jakarta-tomcat/bin/shutdown.sh

個人環境の設定

 Tomcatを使って、Servletのコンパイルをするためには、環境変数CLASSPATHの設定などが必要です。

unix# vi .login(/etc/csh.login)

# set Java
setenv JAVA_HOME "/usr/local/jdk1.3"
setenv XML "/usr/local/jaxp-1.1"
setenv TOMCAT "/usr/local/jakarta-tomcat"
setenv PATH "${PATH}:${JAVA_HOME}/bin"
setenv CLASSPATH "${JAVA_HOME}/lib/classes.zip"
setenv CLASSPATH "${CLASSPATH}:${XML}/jaxp.jar"
setenv CLASSPATH "${CLASSPATH}:${XML}/crimson.jar"
setenv CLASSPATH "${CLASSPATH}:${XML}/xalan.jar"
setenv CLASSPATH "${CLASSPATH}:${TOMCAT}/lib/servlet.jar"
setenv CLASSPATH "${CLASSPATH}:${TOMCAT}/lib/servlet.jar"
#setenv ENCODE EUC_JP

個人用サーブレット環境の追加

 Tomcatでは、デフォルトで、examplesディレクトリなどでサーブレットは動作します。 ここでは、個人用の環境(joe)を追加する方法を説明します。 これは、JServのゾーンに対応する機能です。

ディレクトリ構成

 個人環境(joe)は、以下のディレクトリ構成となります。 サーブレットは、個人環境配下の「WEB-INF/classes」にクラスファイルを設置すると、「http://ホスト名/個人環境名/servlet/サーブレットクラス名」でアクセスできます。

/usr/local/jakarta-tomcat/webapps/joe
├─WEB-INF/
│ └─classes/      http://host/joe/servlet/*で、サーブレットをアクセス
└─jsp/              http://host/joe/jsp/*で、JSPをアクセス

server.xmlの修正

 Tomcatの設定ファイル(server.xml)のContextタグを使って、個人環境の名前とそのディレクトリを追加します。

unix# vi /usr/local/jakarta-tomcat/conf/server.xml

    <Context path="/joe"
             docBase="webapps/joe"
             crossContext="false"
             debug="0"
             reloadable="true" >
    </Context>

個人用サーブレットの登録

 個人用サーブレットを実行する場合は、WEB-INF配下のclassesに設置しても動作しますが、web.xmlファイルに登録することで、任意の名前でアクセスできるようになります。

<?xml version="1.0" ?>
<!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>
            hello
        </servlet-name>
        <servlet-class>
            helloServlet
        </servlet-class>
    </servlet>
</web-app>


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp