$CATALINA_HOME/properties/myapp.properties など、Tomcat webapps ディレクトリの外部にあるプロパティ ファイルから webapp が読み取る必要があるという要件があります。私はいくつかのことを試しましたが、これまでのところ運がありません
4 に答える
複数のアプローチがあります。
- 環境変数を使用する
- システム プロパティを使用する
- 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();
}
私は、Tomcat コンテキスト記述子を介して構成するオプションを好みます。
これらの XML ドキュメントは、フォルダに配置されますtomcat/conf/Catalina/<host>/*.xml
私たちのプロジェクトでは、ファイルのパスを vm 引数として構成します。これは tomcat プロパティとコードに格納され、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 ファイルの内容は次のとおりです。
場所=/var/lib/tomcat7/webapp-configs/webapp
環境固有のプロパティを取得する外部の場所を指します。このようにして、戦争の内容を変更することなく、 dev 、 staging 、および prod で同じ戦争を展開できます。