10

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

4

4 回答 4

19

有多种方法。

  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();
}
于 2013-03-10T04:12:05.873 回答
2

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

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

这指的是: Externalizing Tomcat webapp config from .war 文件

于 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 回答