Tomcat WARファイルデプロイ

作成日:
java tomcat deploy troubleshooting

概要

WARファイル(Web Application Archive)は、JavaのWebアプリケーションをパッケージ化したファイル形式。Apache Tomcatでは、WARファイルをwebappsディレクトリに配置するか、管理コンソールからアップロードすることでデプロイできる。

デプロイ方法

方法1: webappsディレクトリに配置

# WARファイルをwebappsに配置
cp myapp.war $CATALINA_HOME/webapps/

# Tomcatが自動的に展開(autoDeploy="true"の場合)

方法2: Tomcat Manager(管理コンソール)

  1. http://localhost:8080/manager/html にアクセス
  2. 「WARファイルをデプロイ」セクションでファイルを選択
  3. 「デプロイ」ボタンをクリック

トラブルシューティング

起動失敗時の確認手順

  1. ログを確認する(最重要)
# メインログ
tail -100 $CATALINA_HOME/logs/catalina.out

# アプリケーション固有のログ
tail -100 $CATALINA_HOME/logs/localhost.$(date +%Y-%m-%d).log

# リアルタイムで監視
tail -f $CATALINA_HOME/logs/catalina.out
  1. アプリケーションのステータスを確認
# Manager APIで確認
curl -u admin:password http://localhost:8080/manager/text/list

よくある問題と解決方法

問題原因解決方法
ClassNotFoundException依存ライブラリが不足WARにライブラリを含めるか、$CATALINA_HOME/lib/に配置
UnsupportedClassVersionErrorJavaバージョン不一致WARのコンパイルバージョンとTomcatのJavaバージョンを確認
NoClassDefFoundErrorクラスパス設定の問題依存関係を確認、WEB-INF/libを確認
OutOfMemoryErrorメモリ不足CATALINA_OPTSでヒープサイズを増加
Address already in useポート競合使用中のポートを確認し、変更または停止
Permission denied権限不足webappsディレクトリの権限を確認

Javaバージョン不一致の確認

# TomcatのJavaバージョンを確認
$CATALINA_HOME/bin/catalina.sh version

# または
java -version

# WARファイルのコンパイルバージョンを確認(クラスファイルから)
unzip -p myapp.war WEB-INF/classes/com/example/MyClass.class | file -

Javaバージョンとクラスファイルのバージョン対応表:

クラスバージョンJavaバージョン
52.0Java 8
55.0Java 11
61.0Java 17
65.0Java 21

メモリ設定の調整

# setenv.sh を作成($CATALINA_HOME/bin/)
export CATALINA_OPTS="-Xms512m -Xmx2048m -XX:MaxMetaspaceSize=256m"

web.xml の検証

WARファイル内のWEB-INF/web.xmlに構文エラーがあるとデプロイに失敗する。

# WARから web.xml を抽出して確認
unzip -p myapp.war WEB-INF/web.xml | head -50

# XMLの構文検証
xmllint --noout WEB-INF/web.xml

コンテキストパスの競合

同じコンテキストパスを持つアプリケーションが既に存在する場合、デプロイに失敗する。

# 既存のアプリケーションを確認
ls -la $CATALINA_HOME/webapps/

# 同名のディレクトリやWARがあれば削除または名前変更

クリーンデプロイ

問題が解決しない場合、クリーンデプロイを試す。

# Tomcatを停止
$CATALINA_HOME/bin/shutdown.sh

# 古いデプロイを削除
rm -rf $CATALINA_HOME/webapps/myapp
rm -f $CATALINA_HOME/webapps/myapp.war

# workディレクトリをクリア(キャッシュされたコンパイル済みJSPなど)
rm -rf $CATALINA_HOME/work/Catalina/localhost/myapp

# WARを再配置
cp myapp.war $CATALINA_HOME/webapps/

# Tomcatを起動
$CATALINA_HOME/bin/startup.sh

Tomcat Manager の設定

Managerアプリを使用するには、tomcat-users.xmlでユーザーを設定する必要がある。

<!-- $CATALINA_HOME/conf/tomcat-users.xml -->
<tomcat-users>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <user username="admin" password="password" 
        roles="manager-gui,manager-script"/>
</tomcat-users>

関連項目