39

Tomcat 7 で webapp を構成する際に問題があります。私の WAR ファイルには、プロパティ ファイルがあり、myApp/WEB-INF/classes/myProps.props環境固有のプロパティが含まれています。同じ WAR ファイルが複数の環境にデプロイされるように、サーバー上のその構成ファイルをオーバーライドしようとしています。

の置換構成ファイルを使用してこれを行う方法があると聞きましたtomcat/conf/Catalina/myApp。これは私が理解するのに苦労している方法です。

また、myApp.war同じ Tomcat サーバーで実行されている多数のサーバーの 1 つであり、localhost として実行されません。いくつかの Web アプリケーションでこの問題を解決できるようにしたいと考えています。

Server version: Apache Tomcat/7.0.23
Server built:   Nov 20 2011 07:36:25
Server number:  7.0.23.0
OS Name:        Linux
4

4 に答える 4

68

Java からJNDItomcat/conf/Catalina/<host>経由でアクセスできる「環境エントリ」の定義など、多くの設定を可能にするコンテキスト記述子を含めることができます。それを使用する方法はたくさんあります。個人的には、プロパティ ファイルへのファイル システム パスである環境エントリを設定します。私のアプリはこのエントリをチェックするように構築されており、存在しない場合は、代わりにクラスパスでファイルを探します。このように、dev では、クラスパス上に dev プロパティがありますが、ビルドしてデプロイするときは、それを外部ファイルにポイントします。

Tomcat の Web サイトには、コンテキストを構成するための優れたドキュメントがあります。ファイルの作成方法と配置場所の詳細については、「コンテキストの定義」セクションを参照してください。

例として、ホストに名前が付けられmyHost、アプリがディレクトリで名前が付けられた war ファイルmyApp.warである場合、次の内容でwebapps作成できます。tomcat/conf/Catalina/myHost/myApp.xml

<Context>
    <Environment name="configurationPath" value="/home/tomcat/myApp.properties" type="java.lang.String"/>
</Context>

次に、コードから JNDI ルックアップを実行してjava:comp/env/configurationPath(ここでは 95% の確実性)、その文字列値を取得します。

于 2012-12-21T23:43:54.000 に答える
1

設定 (プロパティ ファイル) を JAR ファイルの Apache Tomcat\lib に配置して、Web アプリケーションから削除することができます。Tomcat のクラス ローダーが webapp で設定を見つけられない場合、「lib」ディレクトリで見つけようとします。そのため、構成をグローバル lib dir に移動するだけで、構成を外部化できます (他の Web アプリケーション間で共有されます)。

于 2012-12-22T13:54:02.977 に答える