Tomcatとは?
- アプリケーションサーバー。APIなどJavaプログラムが格納される。
- Tomcat内に作成したAPIのwarファイルを格納し、Tomcatを起動すると、ファイルが自動的に展開し、デプロイされる。
- 正式名称はApach Tomcatであり、WEBサーバーとしての機能も持っている。ただし、TomcatがWEBサーバーとしての機能を果たすシーンは限定的で、500番台サーバーエラーを直接ブラウザに返却する場合などに限られる。これは各サー バーの役割分担によって稼働を効率化するためである。
Tomcatの設定ファイル
以下のディレクトリに格納される。
/opt/tomcat/apache-tomcat/conf/
- context.xml:Apacheからのリクエストの入り口部分。ここから通信を渡していくホストの設定(DBやセッション情報など)を記述する。
- server.xml
- web.xml
- Catalina/localhost/xxx.xml:1つのtomcatで複数のAPIを管理する場合は、context.xmlに書く設定をここにAPIごとに分割して記述することがある。
Tomcatのログ
以下のディレクトリに格納される。
/opt/tomcat/apache-tomcat/logs/
主に見るログは以下の通り。
- catalina.out:アプリの標準出力。アプリのデプロイからリクエストレスポンスまで出力される。最も重要なログ。
- localhost.log:コンテキスト、つまり、ホストの設定に関する情報。情報自体は少なく、あまり見ることは無い。
- localhost_access_log.txt:上記の通りホストのログだが、リクエストレスポンスに関わる情報が出力されているのでたまに見ることがある。ホストのリクエストレスポンスのログ、すなわち、Apacheに一番近い部分のログと言えそう。
Appendix
catalinaとは?
Tomcat (Webコンテナ)に内包されているサーブレットコンテナ。 TomcatはこのCatalinaとCoyoteというHTTPサーバーを内包している。 TomcatがWEBサーバーとしても機能する理由がこれ。
インシデント
デプロイ時エラー
~catalina.out~
11-Dec-2024 19:44:15.281 SEVERE [main] org.apache.catalina.startup Host Config.deploy WAR Error deploying web application archive [/opt/tomcat/apache-tomcat-9.0.24/webapps/xxx.war]
java.lang.IllegalStateException: Error starting child
at org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:720)
Caused by: javax.naming.Name Not FoundException: Name [jdbc/XXX] is not bound in this Context. Unable to find [jdbc].
context jdbc/XXXが無いと言われている。
原因は不明だが、以下のディレクトリ配下にあるxmlが消えていた
[tomcatのパス]/conf/Catalina/localhost/xxx.xml
ここに以下のようなリソースの指定があるのだが、これが無いためエラーになっていた。
<Resource name="jdbc/XXX"
…
この指定は、以下のファイルに記述する場合もある。
[tomcatのパス]/conf/context.xmle
コメント