web-dev-qa-db-ja.com

Tomcatでwebappコンテキストの外部にあるプロパティファイルを読み取る方法

WebアプリケーションがTomcatwebappsディレクトリの外部のプロパティファイル(たとえば、$ CATALINA_HOME/properties/myapp.properties)から読み取る必要があるというこの要件があります。私はいくつかのことを試しましたが、今のところ運がありません

10
Fernando

複数のアプローチがあります。

  1. 環境変数を使用する
  2. システムプロパティを使用する
  3. Web.xmlでアプリケーションコンテキストパラメータとして設定します

これがサンプルで、Option 1 and Option 2を示しています。

try {

    //Use Any Environmental Variable , here i have used CATALINA_HOME
    String propertyHome = System.getenv("CATALINA_HOME");           
    if(null == propertyHome){

        //This is a system property that is  passed
        // using the -D option in the Tomcat startup script
        propertyHome  =  System.getProperty("PROPERTY_HOME");
    }


    String filePath= propertyHome+"/properties/myapp.properties";

    Properties property = new Properties();         
    property.load(SystemTest.class.getClassLoader().getResourceAsStream(filePath));
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
18
Sudhakar

私はTomcatコンテキスト記述子を介して構成するオプションを好みます。

これらのXMLドキュメントはフォルダTomcat/conf/Catalina/<Host>/*.xmlに配置されます

これは以下を参照します: 。warファイルからTomcat webapp構成を外部化する

2
Hartmut P.

ファイルのパスをTomcatプロパティとコードに格納されるvm引数として構成するプロジェクトでは、System.getProperty(the parameter you config)を使用してパスを取得し、プロパティファイルを読み取ってから、結果を取得します。

1
OQJF

Webapp-configディレクトリのパスを次のように設定しました。

/ var/lib/Tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties

ここでwebapp= webappファイルの名前

System-properties-location.propertiesファイルの内容は次のとおりです。

location =/var/lib/Tomcat7/webapp-configs/webapp

これは、環境固有のプロパティをプルする外部の場所を指します。このようにして、戦争の内容を変更することなく、dev、staging、prodに同じ戦争を展開できます。

0