我有这个要求,我的webapp需要从Tomcat webapps目录之外的属性文件中读取,例如从$ CATALINA_HOME / properties / myapp.properties读取。我尝试了几件事,但到目前为止没有运气
答案 0 :(得分:16)
有多种方法。
下面是一个显示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();
}
答案 1 :(得分:2)
我更喜欢通过Tomcat上下文描述符配置选项。
这些XML文档放在文件夹tomcat/conf/Catalina/<host>/*.xml
答案 2 :(得分:1)
在我们的项目中,我们将文件路径配置为存储在tomcat属性和代码中的vm参数,使用System.getProperty(the parameter you config)
获取路径并读取属性文件,然后获取结果。< / p>
答案 3 :(得分:0)
我们已将webapp-config目录的路径设置如下:
<强> /var/lib/tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties 强>
,其中 webapp =您的网络应用文件的名称
以下是system-properties-location.properties文件的内容:
位置=的/ var / lib中/ tomcat7 / web应用-CONFIGS / web应用强>
它指向从中提取环境特定属性的外部位置。这样我们就可以在dev,staging和prod中部署相同的war而不修改war内容。