使用可修改的属性文件部署war文件

时间:2010-07-08 18:04:18

标签: deployment java-ee

我正在构建一个Web服务,并将其打包到war文件中进行部署。现在我的所有配置文件(.properties和.xml)都被打包到我的.war文件中。这不会起作用,因为某些文件需要针对每个单独的安装进行修改。我知道一些servlet容器会使.war文件完好无损,这意味着配置文件永远不会被轻易修改。我的问题是:使用这些外部配置文件部署.war文件的最佳做法是什么?我认为配置文件需要与.war文件分开发送并放入类路径中的目录中。在Tomcat中是否有这样的默认目录设置,这些文件可以放入,我的Web服务可以找到没有太多麻烦?

也许我不应该使用war文件进行此设置?也许我应该只提供一个zip文件(与war文件具有相同的内容),部署只是将zip解压缩到webapps目录中?

3 个答案:

答案 0 :(得分:0)

我不知道Tomcat中存储配置的任何默认目录,我的 尝试解决同样的问题是:

1 - 将配置移至数据库并提供脚本或网页以修改值。
2 - 有一个部署战争的脚本。该脚本会将用户目录中的配置合并到web.xml或其他已部署的配置文件中 3 - 让webapps首先在用户目录中查找配置和 如果没有找到,那么查找战争部署的配置文件。

最不喜欢的是3 - 它需要所有的webapps检查两个位置的配置和 你最终在服务器上有两个不同的xml文件,并且不总是清楚使用哪个。

下一个收藏夹是2 - 可以在不知道多个配置文件的情况下编写webapps,但是当有人从Tomcat管理器部署而不是使用您的脚本时,您会遇到问题。

收藏夹是1.这在大多数情况下都适用。问题是当你没有DB或 想要配置连接数据库的方式。

答案 1 :(得分:0)

如果从所有网络应用中看到该文件不是问题,您可以将其$CATALINA_HOME/lib

答案 2 :(得分:0)

一个解决方案是在部署war文件后修改属性文件是使用ServletContext.getRealpath()方法来获取真实路径意味着在部署它的服务器中的文件路径,然后修改它将修改文件的文件容器只是不是原始文件。因此,如果对您进行重要修改,则需要对其进行备份。因此,您不需要重新部署war文件,因为它已经从已部署的容器中修改文件。

此解决方案还可以编辑来自java类的webpages文件夹中的文件。

如果您想了解更多信息或如何操作,请告诉我,我已经做过了。