Catalina(Tomcatサーブレットコンテナ)
作成日:
Java Tomcat servlet
概要
Catalinaは、Apache Tomcat のコアコンポーネントで、サーブレットコンテナ(Java Servletの実行環境)として機能する。Tomcatの「心臓部」とも言える存在。
名前の由来
カリフォルニア沖にある**サンタ・カタリナ島(Santa Catalina Island)**にちなんで名付けられた。Tomcat(トム猫)というプロジェクト名に合わせて、開発者たちが遊び心のある名前を選んだと言われている。
役割
- サーブレットライフサイクル管理: サーブレットの生成、初期化、実行、破棄を管理
- リクエスト/レスポンス処理: HTTPリクエストをサーブレットに渡し、レスポンスをクライアントに返す
- セッション管理: ユーザーセッションの作成・維持・破棄
- セキュリティ: 認証・認可の処理
- コンテキスト管理: Webアプリケーション(コンテキスト)の管理
アーキテクチャ
Catalinaは階層的な構造を持つ:
Server(サーバー)
└── Service(サービス)
├── Connector(コネクタ) ← Coyoteが担当
└── Engine(エンジン)
└── Host(ホスト)
└── Context(コンテキスト)
└── Wrapper(ラッパー)
└── Servlet
| コンポーネント | 説明 |
|---|---|
| Server | Tomcat全体を表す最上位コンテナ |
| Service | ConnectorとEngineをグループ化 |
| Engine | リクエストを処理するエンジン |
| Host | 仮想ホスト(ドメイン単位) |
| Context | 1つのWebアプリケーション |
| Wrapper | 1つのサーブレット |
関連ファイル
catalina.sh / catalina.bat
Tomcatの起動・停止を制御するメインスクリプト。
# 起動
$CATALINA_HOME/bin/catalina.sh start
# 停止
$CATALINA_HOME/bin/catalina.sh stop
# フォアグラウンドで起動
$CATALINA_HOME/bin/catalina.sh run
# バージョン確認
$CATALINA_HOME/bin/catalina.sh version
catalina.out
Tomcatの標準出力・標準エラー出力が記録されるログファイル。
# ログの場所
$CATALINA_HOME/logs/catalina.out
# リアルタイムでログを確認
tail -f $CATALINA_HOME/logs/catalina.out
catalina.properties
Catalinaの動作を設定するプロパティファイル。
# 場所
$CATALINA_HOME/conf/catalina.properties
主な設定項目:
- クラスローダーの設定
- セキュリティ設定
- 文字エンコーディング設定
catalina.policy
セキュリティマネージャー使用時のセキュリティポリシー定義。
# 場所
$CATALINA_HOME/conf/catalina.policy
環境変数
| 変数名 | 説明 |
|---|---|
CATALINA_HOME | Tomcatのインストールディレクトリ |
CATALINA_BASE | 複数インスタンス実行時の各インスタンスのベースディレクトリ |
CATALINA_OPTS | Catalina専用のJVMオプション |
CATALINA_PID | PIDファイルの場所 |
CATALINA_TMPDIR | 一時ファイルのディレクトリ |
CATALINA_HOME vs CATALINA_BASE
# 単一インスタンスの場合
# CATALINA_HOME = CATALINA_BASE
# 複数インスタンスの場合
CATALINA_HOME=/opt/tomcat # 共通のバイナリ
CATALINA_BASE=/opt/tomcat-instance1 # インスタンス固有の設定
CATALINA_BASE=/opt/tomcat-instance2 # 別インスタンス
server.xml での設定
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
<Service name="Catalina">
<!-- Coyote HTTP Connector -->
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<!-- Catalina Engine -->
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
</Engine>
</Service>
</Server>
トラブルシューティング
ログの確認
# メインログ
tail -f $CATALINA_HOME/logs/catalina.out
# 日付別ログ
ls $CATALINA_HOME/logs/catalina.*.log
よくある問題
| 問題 | 原因 | 対処 |
|---|---|---|
| 起動しない | ポート競合 | `netstat -tlnp |
| OutOfMemoryError | ヒープ不足 | CATALINA_OPTS でメモリ増加 |
| デプロイ失敗 | 権限エラー | webappsディレクトリの権限確認 |
関連項目
- Apache Tomcat - Tomcatの概要
- Coyote - HTTPコネクタ
- Jasper - JSPエンジン