我有这个要求,我的 webapp 需要从 Tomcat webapps 目录之外的属性文件中读取,例如从 $CATALINA_HOME/properties/myapp.properties。我已经尝试了几件事,但到目前为止没有运气
问问题
41606 次
4 回答
19
有多种方法。
- 使用环境变量
- 使用系统属性
- 将其设置为 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();
}
于 2013-03-10T04:12:05.873 回答
2
我更喜欢通过 Tomcat 上下文描述符进行配置的选项。
这些 XML 文档被放置在文件夹中tomcat/conf/Catalina/<host>/*.xml
于 2014-06-10T17:33:31.850 回答
1
在我们的项目中,我们将文件的路径配置为 vm 参数,这些参数将存储在 tomcat 属性和代码中,用于System.getProperty(the parameter you config)
获取路径并读取属性文件,然后获取结果。
于 2013-03-10T03:45:20.190 回答
0
我们将 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 中部署相同的战争,而无需修改战争内容。
于 2016-04-15T11:27:02.287 回答