如何在Tomcat中读取我的webapp上下文之外的属性文件
我有这个要求,我的webapp需要从Tomcat webapps目录之外的属性文件中读取,例如从$ CATALINA_HOME / properties / myapp.properties读取。 我尝试过几件事,但到目前为止还没有运气
有多种方法。
- 使用环境变量
- 使用系统属性
- 在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属性和代码中的vm参数,使用System.getProperty(the parameter you config)
获取路径并读取属性文件,然后获取结果。
我更喜欢通过Tomcat上下文描述符配置选项。
这些XML文档放在tomcat/conf/Catalina/
文件夹中
这涉及: 从.war文件外部化Tomcat webapp配置
我们把webapp-config目录的路径如下:
/var/lib/tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties
其中webapp =您的webapp文件的名称
以下是system-properties-location.properties文件的内容:
位置=的/ var / lib中/ tomcat7 / web应用-CONFIGS / web应用
它指向一个外部位置来从中提取特定于环境的属性。 这样我们可以在dev,staging和prod中部署相同的war而不修改war内容。