Java

Tomcat停止時にSESSIONS.serが見つからないエラーが発生した時の対応方法

記事内に商品プロモーションを含む場合があります

突然 Tomcat の catalina.out にエラーが出力され始めたので調査しました。

どうやら、エラーになっているのは AXIS2 の Web アプリ。

Tomcat 停止時に SESSIONS.ser が見つからないと言っています。

今まで意識してませんでしたが、通常は work ディレクトリに作成されるようです。

この辺は、Tomcat の仕組みを理解しないといけないところですね。

SESSIONS.serの生成と破棄タイミング

SESSIONS.ser 自体は、Tomcat 停止時(stop)に作成されて、Tomcat 起動時(start)に削除されるようです。

最近やったことと言えば、ajp を使って Apache をフロントに使ったことだけですが、これと関係あるのかはまだわかりません。
(切り分けのためには Tomcat 単体での動作に戻してみる必要があります)

海外のサイトにこれと同じエラーについて論議されたスレッドがあるので、まずはそっちで手掛かりを掴んでみたいと思います。
(ただ、このサイト重い・・・)

エラーの詳細

以下は実際に出力されたエラーになります。

Tomcat のルートディレクトリは公開できないので下記では ${CATALINA_HOME} に書き換えています。

各アプリケーションのバージョンは、Tomcat が 5.5.25、Apache は 2.2.3 です。

エラーの原因と対応

少しずつ原因を切り分けながら進めていったところ、AXIS2-1.3 から AXIS2-1.2 に戻したら現象が出なくなりました。

ちなみに、現在の work ディレクトリ配下は以下の通り。

やはり、Tomcat とアプリケーションの組み合わせで発生していたようです。

現在はフロントの Apache からは ajp は使っていませんが、ajp に切り替えてみてそのパターンも見ておこうと思います。

ちなみに現在は ProxtPass で Tomcat の 8080 に直接リクエストを委譲しています。