windowsでTomcatを使用する場合の注意点 | Java Springの逆引きメモ

Java Springの逆引きメモ

JavaのSpring frameworkのメモを書いていきます!
初心者の勉強ノートなので間違いがあるかもしれませんが、何かヒントになることがあれば幸いです。

windowsのtomcatには問題があります。

tomcat6.xでは確かめてませんが、5.5では確認しました。



【問題点】

WARファイルのアンデプロイ(配備解除)をするときに、中のJARファイルなどがロックされて削除できません。

ですので、次に同じWARファイルをデプロイしても、ちゃんと展開されません。

例えば私の環境では、

  「$TOMCAT_HOME/webapp/アプリ名/WEB-INF/lib/commons-validator-1.3.1.jar」

が削除されない、という事象が発生しました。



【原因】

ネットを検索してみたところ、理由は以下のもようです。

windows版のTomcatは古いファイルシステム(windows 98やME)の時代に作られて、その時代のソースを流用してしまっているようです。

ファイルのロックはOS自体がバージョンによってロックの仕方を大きく変えてきました。

おそらく、TomcatがOSのバージョンについていけていないのでしょう。

ですので、ファイルロックがおかしくなっているようです。




【回避策】

Tomcatのホームディレクトリの下の以下のファイルを書き変えます。


  ファイル: conf/context.xml


  変更例:以下の赤字の箇所

<!-- The contents of this file will be loaded for each web application -->
<Context antiJARLocking ="true" antiResourceLocking="true" >

  <!-- Default set of monitored resources -->
  <WatchedResource>WEB-INF/web.xml</WatchedResource>

  <!-- Uncomment this to disable session persistence across Tomcat restarts -->
  <!--
  <Manager pathname="" />
  -->

</Context>



変更の意味:

上記の属性は、Jarファイルのロックをしないというものと、リソースファイルのロックをしないというものです。

これにより、アプリケーションの起動時間は遅くなりますが、ロックの問題を回避できます。



参考:

・トップ

Tomcat5の設定ファイルの説明