如何在 WAR 存档中包含应用程序配置文件?

Posted

技术标签:

【中文标题】如何在 WAR 存档中包含应用程序配置文件?【英文标题】:How to include app config file in WAR archive? 【发布时间】:2021-04-22 19:30:40 【问题描述】:

我在部署 Java Web 应用程序时遇到问题。它以我们的应用程序配置文件 (myapp.properties) 为中心。在某些情况下,将这个文件放在 WAR 外部似乎可以正常工作,但是每当我尝试正确部署它(Docker、正确的 JBoss 部署等)时,由于无法从 myapp.properties 中找到/读取,部署不可避免地会失败.

我在这里和其他地方看到了一些将这些文件打包 WAR 档案中的参考资料,但我找不到任何关于如何实际执行此操作的信息。所以,我的问题是:

在 WAR 存档和/或部署中包含应用程序配置文件的正确方法是什么?

【问题讨论】:

【参考方案1】:

这取决于您要如何访问该文件。

如果你想通过类加载器资源加载它,你需要它在类路径中,所以最好的位置是在WEB-INF/classes里面。

顺便说一句,src/main/resources 中的资源最终会出现在 if you are using Maven 中

您也可以将它放在 WAR 中的任何位置,例如 WEB-INF/config 并通过 ServletContext.getResourceAsStream("/WEB-INF/config/.... 访问它。但请注意,它不在 WEB-INF 目录中,您必须明确禁止访问 web.xml 部署描述符中的文件,否则客户端请求可以访问它。

【讨论】:

以上是关于如何在 WAR 存档中包含应用程序配置文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 WAR 文件中包含 Hsql 数据库?

您的应用程序包签名中的权利与您的配置文件中包含的权利不匹配

使用 python 查看 .gz 存档中包含的文件

如何在用于部署的服务结构应用程序包中包含发布配置文件和应用程序参数?

创建应用程序源包AWS Elastic Beanstalk

如何在 AWS 配置文件中包含山魈凭证?