FreeBSD上に、Javaのサーブレット環境の構築方法について説明します。
システム構成は、ApacheとTomcatを連携した構成となっています。
Tomcatにも、簡易Webサーバ機能が付いていますが使いません。
Tomcatは、Apacheのモジュール(mod_jk)と通信することで、要求を受け付けます。
+-----------------------------+ +----------+ 80|+----------+ | | ブラウザ |---->|| apache | | +----------+ || +--------+ 8007+----------+| || | mod_jk |---->| tomcat || |+-+--------+ +----+-----+| | | | | +----+-----+| | | servlet || | +----------+| | +---------------+ | | JDK1.3 | +-------------+---------------+ |
PC本体 | PC-9821 Xv20 |
---|---|
OS | FreeBSD 4.2 Release |
JDK | JDK 1.1.8 |
XML | JAXP 1.1 |
メイク | Ant 1.3 |
サーブレット | Tomcat3.2.1, ServletAPI 3.2 |
Apache | 1.3.19 |
Apacheモジュール | mod_jk, mod_ssl |
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では必要です。
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をインストールします。 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は、サーブレットを開発するための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には、サーブレットの動作確認をするための簡易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 |
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 |
TomcatのサーブレットのサンプルをApache+mod_jkで実行してみます。 Lynxや、InternetExplorerや、NetscapeNavigatorなどのブラウザを使って、動作確認します。
unix# lynx http://localhost/examples/servlets/ unix# lynx http://localhost/examples/jsp/ |
Tomcatを起動する場合は、以下のコマンドを使います。 Tomcatの起動は、Apacheの起動の前に行わなければなりません。 (Apacheの起動時に、mod_jkの設定を自動的に行うため)
unix# /usr/local/jakarta-tomcat/bin/startup.sh unix# /usr/local/apache/bin/apachectl start |
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をアクセス |
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> |