【问题标题】:How to know the location of a .properties file to read configurations when deploying a Java web application?部署 Java Web 应用程序时如何知道 .properties 文件的位置以读取配置?
【发布时间】:2017-04-22 16:40:11
【问题描述】:

据我所知,Java Web 应用程序通过部署 Web 应用程序的 .war 文件部署在服务器上。这是正确的吗?

我有一个 Web 应用程序,它具有一些配置,允许服务器管理员在部署时配置应用程序。前任。设置要保存日志文件的路径,设置存储上传文件的位置等。

我在 .properties 文件中定义了这些参数,并硬编码了它的路径。此后,我能够让 Web 应用程序读取 .properties 文件中的值,而无需重新编译源代码(因为 .properties 文件路径没有改变)。
现在我想知道如何在不硬编码 .properties 文件的路径的情况下做到这一点,这样我就可以在任何服务器上部署它,而不必担心它的目录结构。

那么,是否可以在部署 Web 应用程序时提供 .properties 文件和 .war 文件,以便服务器管理员可以编辑 .properties 配置文件,部署 . .war 文件(无需重新编译 Web 应用程序)并让它读取 .properties 文件中的值?
如果是这样,Web 应用程序如何知道 .properties 文件在哪里?

【问题讨论】:

    标签: java tomcat deployment


    【解决方案1】:

    最佳实践是将属性文件放在可以在类路径中找到的位置。您的应用程序使用

    加载文件
    this.getClass().getClassLoader().getResourceAsStream( "myConfig.properties");
    

    如果文件位于非标准类路径位置,您可以使用 tomcats 配置可能性微调您的应用程序类路径。参见例如Understanding The Tomcat Classpath

    【讨论】:

    • 把它放在classpath可以找到的位置意味着服务器管理员需要整个项目目录来更改.properties文件,对吧?