【问题标题】:How to read a properties file outside my webapp context in Tomcat [duplicate]如何在Tomcat中读取我的webapp上下文之外的属性文件[重复]
【发布时间】:2013-02-25 10:45:56
【问题描述】:

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

【问题讨论】:

  • 文件就是文件;给它一个路径并阅读它。
  • 是的,这很容易做到。不是没有道理,是有原因的。
  • 我认为该文件将被多个项目共享,我发布一个答案,希望它能给你提示。
  • 这是配置所必需的,当我们将相同的战争部署到不同的盒子(dev、qa 等)时​​。我们使用 $TOMCAT/conf/xxx.properties 文件,并有一个不同应用程序使用的 jar(带有用于读取命名属性文件和属性本身的类)。

标签: java tomcat web-applications servlets properties


【解决方案1】:

有多种方法。

  1. 使用环境变量
  2. 使用系统属性
  3. 将其设置为 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();
}

【讨论】:

  • 谢谢!我在系统属性“catalina.home”中使用了你的第二种方法这正是我所需要的!
【解决方案2】:

我更喜欢通过 Tomcat 上下文描述符进行配置的选项。

这些 XML 文档被放入文件夹 tomcat/conf/Catalina/<host>/*.xml

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

【讨论】:

    【解决方案3】:

    在我们的项目中,我们将文件的路径配置为 vm 参数,这些参数将存储在 tomcat 属性中,在代码中,使用System.getProperty(the parameter you config) 获取路径并读取属性文件,然后获取结果。

    【讨论】:

    • 是的,但是如果 Tomcat 和我需要在类的某个地方读取文件....实现 ServletContextListener {} 我得到了 WAR 相关路径!是否有可能使用例如 SPRING 来获取 WAR 之外的路径?文件:d:/my/path/toFile.log
    【解决方案4】:

    我们把webapp-config目录的路径如下:

    /var/lib/tomcat7/webapps/webapp/WEB-INF/classes/system-properties-location.properties

    在哪里 webapp= 您的 webapp 文件的名称

    这里是 system-properties-location.properties 文件的内容:

    location=/var/lib/tomcat7/webapp-configs/webapp

    它指向一个外部位置以从中提取特定于环境的属性。这样我们就可以在 dev 、 staging 和 prod 中部署相同的战争,而无需修改战争内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-23
      • 2011-09-06
      • 2012-06-17
      • 1970-01-01
      • 2011-10-09
      • 2015-05-18
      • 2012-02-05
      相关资源
      最近更新 更多