如何在Tomcat中读取webapp上下文之外的属性文件

时间:2013-03-10 03:27:56

标签: java tomcat web-applications servlets properties

我有这个要求,我的webapp需要从Tomcat webapps目录之外的属性文件中读取,例如从$ CATALINA_HOME / properties / myapp.properties读取。我尝试了几件事,但到目前为止没有运气

4 个答案:

答案 0 :(得分:16)

有多种方法。

  1. 使用环境变量
  2. 使用系统属性
  3. 将其设置为Web.xml中的应用程序上下文参数
  4. 下面是一个显示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

这是指:Externalizing Tomcat webapp config from .war file

答案 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内容。