WebアプリケーションがTomcatwebappsディレクトリの外部のプロパティファイル(たとえば、$ CATALINA_HOME/properties/myapp.properties)から読み取る必要があるというこの要件があります。私はいくつかのことを試しましたが、今のところ運がありません
複数のアプローチがあります。
これがサンプルで、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();
}
私はTomcatコンテキスト記述子を介して構成するオプションを好みます。
これらのXMLドキュメントはフォルダTomcat/conf/Catalina/<Host>/*.xml
に配置されます
これは以下を参照します: 。warファイルからTomcat webapp構成を外部化する
ファイルのパスをTomcatプロパティとコードに格納されるvm引数として構成するプロジェクトでは、System.getProperty(the parameter you config)
を使用してパスを取得し、プロパティファイルを読み取ってから、結果を取得します。
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に同じ戦争を展開できます。