2012-03-06 10 views
5

Tomcatのドキュメント(http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)Tomcatのアップデートはcontext.xmlにではなく、

はコンテキストファイルが存在しない場合のみべき $ CATALINA_BASE/conf/[enginename]/[hostname] /のアプリケーションでは、アプリケーションファイル内の /META-INF/context.xmlの個々のファイルにあります。 アプリケーションがWARとしてパッケージ化されている場合、/META-INF/context.xmlは$ CATALINA_BASE/conf/[enginename]/[hostname] /にコピーされ、 に変更された はアプリケーションのコンテキストパスに一致します。 このファイルが存在すると、新しい/META-INF/context.xmlを持つ新しいWARがホストのappBaseに配置された の場合、 は置き換えられません。

太字のテキストはクリアです。しかし、私は真実ではないと通知します。 (私はまさにこの動作を必要とする)ここで

は、手順は次のとおりです。のcontext.xmlと

  1. aaa.warは、WebアプリケーションへのMETA-INF
  2. コピーに含まれています。 tomcatがデプロイします。 WebアプリケーションへのMETA-INF/context.xmlにに
  3. ファイルconf\Catalina\localhost\aaa.xml
  4. コピーを変更することにより、conf\Catalina\localhost\aaa.xml OK
  5. 変更aaa.warファイルが変更されます!

どうしたのですか?バグか隠された機能ですか?

背景 - 解決したい問題:

構成に依存しないビルドとインストール。私は戦争ファイルを出荷するために植えます。クライアントは自分自身の設定を使用してTomcatを設定します。私が新しいリリースを出荷するとき、私は設定なしで戦争だけを配信し、展開するとクライアント固有の設定を使用します。

ドキュメントでは、最適な場所はcontext.xmlですが、毎回上書きすると意味がありません。 (?なぜ私は新しい成果物を作成するためにしている場合、ビルド時に何かを変更すると、大きな構成の利点はなく、JNDIと、このようなものを使用します。)

環境:窓、tomcatに私がしました6.0.33

+0

類似した問題:http://stackoverflow.com/questions/4158468/tomcat-context-management – takacsot

+0

このサイトには既に回答があります:http://stackoverflow.com/questions/7142365/how-to-provide-a -context-a-web-application-tomcatのための設定 – takacsot

答えて

6

を同じ問題を抱えており、直接誤解を招かない限り、文書は少なくとも不十分です。

すでに展開されているWARファイルの新しいバージョンをwebappsディレクトリにコピーすると、Tomcatは既存のアプリケーションを再デプロイせずに古いアプリケーションをアンデプロイしてから、新しいアプリケーションをデプロイします。この違いは、最初は重要ではないようだが、問題は、古いアプリケーションのデプロイメント中に、conf/Catalina/localhostのコンテキストファイルも削除されるということです。次に、新しいアプリケーションのデプロイ時に、現在のWARファイルの新しいコンテキストファイルがconf/Catalina/localhostにコピーされます。

私が見つけた唯一の実現可能な解決策は、WARファイルとして新しいアプリケーションをデプロイするのではなく、展開されたディレクトリを置き換えるか上書きすることです。 aaa.warをwebapps /にコピーするのではなく、aaa.warをwebapps/aaa /に直接展開します。

関連する問題