Java 在分解之前更新tomcat war文件(未压缩)

Java 在分解之前更新tomcat war文件(未压缩),java,tomcat,chef-infra,Java,Tomcat,Chef Infra,我的应用程序WAR已经有了一些设置。在部署到tomcat容器之前,我想动态更改它们。现在我在/Catalina_base/中部署它们,启动tomcat应用程序,一旦WAR被解压缩,我更新conf文件并重新启动tomcat。在启动tomcat之前更新conf文件的最佳实践是什么 另外,我如何使用厨师烹饪书来实现这一点 非常感谢您的帮助。正如克里斯·诺罗斯(Chris Nauroth)的评论所说,最佳做法是将特定于环境的配置排除在战争之外 但是,如果您在那场战争中遇到了配置问题,那么您可以使用zip

我的应用程序WAR已经有了一些设置。在部署到tomcat容器之前,我想动态更改它们。现在我在/Catalina_base/中部署它们,启动tomcat应用程序,一旦WAR被解压缩,我更新conf文件并重新启动tomcat。在启动tomcat之前更新conf文件的最佳实践是什么

另外,我如何使用厨师烹饪书来实现这一点


非常感谢您的帮助。

正如克里斯·诺罗斯(Chris Nauroth)的评论所说,最佳做法是将特定于环境的配置排除在战争之外

但是,如果您在那场战争中遇到了配置问题,那么您可以使用zip工具更新配置文件

如果您使用的是典型的Linux发行版,那么假设您的WAR文件名为
application.WAR
,并且您要更新的配置文件名为
WEB-INF/classes/com/example/config.properties
,那么在启动Tomcat之前,您可以在部署期间运行以下命令:

unzip application.war WEB-INF/classes/com/example/config.properties
# edit the configuration file now
zip -f -m application.war WEB-INF/classes/com/example/config.properties
解压命令后,文件将位于与其在WAR中的位置相匹配的子文件夹中(例如
WEB-INF/classes/com/example/config.properties
),然后第二个zip命令将从磁盘中删除该文件并将其放回WAR


我不熟悉Chef,因此我不确定如何在部署过程中自动运行这些命令,但可能它提供了一种直接像这样运行命令的方法。

最佳做法是将任何特定于环境的配置从war文件中外部化。前一个问题描述了外部化的一些选项。