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
コンポーネント説明
ServerTomcat全体を表す最上位コンテナ
ServiceConnectorとEngineをグループ化
Engineリクエストを処理するエンジン
Host仮想ホスト(ドメイン単位)
Context1つのWebアプリケーション
Wrapper1つのサーブレット

関連ファイル

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_HOMETomcatのインストールディレクトリ
CATALINA_BASE複数インスタンス実行時の各インスタンスのベースディレクトリ
CATALINA_OPTSCatalina専用のJVMオプション
CATALINA_PIDPIDファイルの場所
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ディレクトリの権限確認

関連項目