しいしせねっと
[Javaのお部屋] [java.dev.jp] [developer.jp]
[Tomcat]

Tomcat 4でServlet/JSP するメモ

Jakarta Tomcat は、Apache のサブプロジェクトでつくられている Servlet / JSP のリファレンス環境である。
こいつを使って、Servlet / JSP のいろいろを試す。
Tomcat 4とApache の連携は、あちこち探しても日本語資料が微量というか・・・まとまってないですねぃ・・・。
というわけで、解読というか、いろいろ試してApache との連携の解読に成功しました。そういえば、PostgreSQLのJDBCドライバとか、繋ぐものが好きかもしれない・・・。

このページのもくじ

インストール

必要なもの

Tomcat 5の場合は、ほとんど変わりませんが

3.x は Linux メモでちょこっとメモしていました。もう古いので使うのはやめましょう。
4.x は、同じです。最新版は、2004年、4.1.30 です。古いものは危険です。
バイナリ版をインストールします。
バイナリ版Tomcat は、Standard版とLE版の2つが用意されています。
この違いは、LE版では実行に必要な環境のうち J2SDK1.4に含まれているXMLパーサを含んでいません。LE版にXMLパーサを組み合わせればJ2SDK1.2以降でも動作します。
その他、JavaMail、Java Activation Framework (JAF)、Xerces、JNDI、JDBC標準拡張も、LE版には含まれていません。

種類 ファイル名 違い
Standard版 tomcat-4.1.?.tar.gz 等 XMLパーサ、JavaMail、JAF、Xerces、JNDI、JDBC拡張が含まれる。J2SDK1.2以降で動作する。
LE版 tomcat-4.1.?-LE-jdk14.tar.gz 等 軽量版。Tomcat本体以外のものは含まれない。JDK1.2以降1.4未満で動作させるためにはXMLパーサが必要。
src版 tomcat-4.1.?-src.tar.gz 等 元になるソースコード

ファイル名は、4.1.18からjakarta- の名称がなくなっているようです。

解凍する

# tar zxvf tomcat-4.1.x.tar.gz
# mv tomcat-4.1.x /usr/local
# cd /usr/local
# ln -s tomcat-4.1.x tomcat

ユーザは tomcat なんていうのを作っておくと安全かもしれません。

# adduser tomcat
# chown -R tomcat:tomcat /usr/local/tomcat-4.1.x

環境設定するんかな?

/etc/profile または、ユーザの環境変数に
JAVA_HOME とか、いろいろ設定します。
Tomcat 4系の環境変数は、CATALINA_HOME と CATALINA_BASE があります。

CATALINA_HOME Tomcatのバイナリディレクトリ。(省略可)
CATALINA_BASE データ用のディレクトリ。これを変更することで、複数起動が可能になります。
省略すると、CATALINA_HOMEと同じになります。
CATALINA_TMPDIR 作業用? 省略時は %CATALINA_BASE%/temp でいいのかな?

CATALINA_HOME以外は実行ユーザで書き込み権限があった方がいいのかもしれません。
あと、PATHにも $CATALINA_HOME/bin を追加しておくといいかもしれません。
# su - tomcat
となって startup.sh をつんつんすると、Tomcat がさくっと起動します。Tomcat 3系より軽そうにメッセージ少ないです。

ディレクトリはどうなってるの?

tomcat をどこへインストールしたのか知りませんが、その中は、こんなふうになっています。

%CATALINA_HOME%
bin/
common/ Catalina とWebアプリの共通クラス群?
classes/ 共通のクラス置き場?
lib/ 共通ライブラリ置き場 ( jre/lib/ext 相当? )
ant とか activation とか mail とか
server/ Catalina内部クラス (CATALINA_BASE側かも?)
webapps/ 管理ツール達
shared/ からっぽ?
%CATALINA_BASE%
conf/ 設定ファイル
server.xml メインの設定ファイル(サンプル入り)
server-noexamples.xml.config サンプルを外した server.xmlファイル
web.xml デフォルトのweb.xml
tomcat-users.xml 簡単なユーザ定義
logs/ ログ
webapps/ アプリケーション (conf/server.xmlで変更可)
ROOT/
admin.xml
manager.xml
work/ 作業ファイル置き領域
%CATALINA_TMPDIR%
/

ドキュメントのなかで、CATALINA とか書かれてるのは、Tomcat 4系の開発コードのようです。
webapps の中に、各種Webアプリケーションというものが置かれていたり、作ったりできます。
さらにその中の WEB-INF/ というディレクトリは、設定やラリブラリをいろいろと置けてしまいます。
conf/server.xml の Context をカキカキすることで、webapps 以外へのWEBAPP配置もできます。(4 ではできないとか、誰かが言ってたけど、そなのか?)

まぁとりあえず、動作確認もできたところで、設定ファイルいってみよう

conf/server.xml です。(日本語コメント付き UTF-8)
conf/tomcat-users.xml

Tomcat初期利用ポート一覧(server.xmlの場合)
サービス Port 初期状態 備考
Server 8005 Open シャットダウン用
WARP 8008 Close mod_webapp用
AJP13 8009 Open Coyote
HTTP/1.1 8080 Open Coyote
Proxied HTTP/1.1 8082 Close  
旧HTTP/1.1 Test 8083 Close catalina
HTTP/1.0 8084 Close catalina
SSL HTTP/1.1 8443 Close Coyote

tomcat-users.xml は、adminとmanager管理ツールのアクセス制限等につかうもののようです。
role というのがアプリケーション、user がユーザのようです。
Tomcat 4.1.xには admin と manager というツールがついているようですので、これのユーザを追加してみましょう。
Windows版のTomcat は、インストールする時にこのユーザも入力しているかもしれません。
まず、<role rollname="admin"/> と <role rolename="manager.xml"/> を role のところへ追加します。
<user username="username" password="password" roles="admin,manager"/> なんてふうに、追加します。

Tomcat が起動されていたら、再起動しましょう。
http://localhost:8080/ の admin とか manager というところへ追加したアカウントでアクセスできるようになっているはずです。

web.xml の設定

WEB-INF/web.xml は、Servlet を配置するときに記述するファイルです。
Tomcat 3 までは、これがなくても /servlet/ ディレクトリ配下にServelt を配置していましたが、Tomcat 4からは、しないのが安全ということで、web.xml で指定しましょうということになったようです。
conf/web.xml は、これのデフォルトになります。こちらを変更することで、/servlet/ ディレクトリが使えるようになりますが、やめておきましょう。

Apache とごにょごにょする?

Last update 2003.9.8

ApacheとTomcat をごにょごにょするには、mod_jk2やmod_webapp というものを使います。この近辺の日本語資料が少ないので悲しいです。
なんか、mod_webapp とか、coyote とか mod_jk2 とかいろいろあるので混乱しがちですが、次のような感じです。

Tomcat コネクタ一覧
名称 開発 Tomcat ver Protocol 対応サーバとか
mod_jserv 終了 3.x
AJP11,Ajp12 Apache 1.3.x
mod_jk 終了 All AJP12,AJP13 Apache 1.3.x
mod_jk2 3.x 4.x 5.x AJP12,AJP13 Apache 1.3/2.0
mod_webapp   4.x WARP Apache 1.3.x ?
(Windows非サポート)
coyote 3.3以降 HTTP/1.1,AJP13,JNI Tomcat側の新実装
ajp

AJP12,AJP13 Tomcat側の旧実装?

Tomcat 4.1.x には最初から coyote が入ってたので、次はApache 側の設定をしてみましょう。

mod_webapp とmod_jk2がありますが、mod_jk(古いもの)とmod_webapp を比べた場合にはmod_webappの方が素直な設定のようなので、私的にはWebモジュール単位でApacheと連携できるmod_webappをおすすめします。

mod_jk2は、jspだけをマッピングしたり、サーブレットのマッピングとか面倒ではないのでしょうかね・・・? Webモジュール内の処理は全部Tomcat側で処理させた方がいいので、おすすめできません。CGIやPHPなどを使う場合は、モジュールの外で分けて使うようにしましょう。


©2002 おこめ@しいしせねっと