我正在构建一个web服务,并将其打包到一个war文件中以进行部署。现在,我所有的配置文件(.properties和.xml)都被打包到我的.war文件中。这是行不通的,因为每个单独的安装都需要修改其中的一些文件。我知道一些servlet容器会保持.war文件不变,这意味着配置文件永远不会被轻易地修改。我的问题是:使用这些外部配置文件部署.war文件的最佳实践是什么?我认为配置文件需要与.war文件分开提供,并放在类路径中的一个目录中。在Tomcat中是否有类似这样的默认目录设置,这些文件只需放入其中,我的web服务就可以毫不费力地找到这些文件?
也许我不应该在这个设置中使用war文件?也许我应该只提供一个zip文件(具有与war文件相同的内容),并且部署将简单地将该zip解压到webapps目录中?
发布于 2010-07-09 04:04:31
我不知道Tomcat中存储配置的任何默认目录,我尝试解决的相同问题是:
1-将配置移动到数据库,并提供脚本或网页来修改值。
2-有一个脚本来部署war。该脚本将用户目录中的配置合并到web.xml或其他已部署的配置文件中。
3-让webapps首先在用户目录中查找配置,如果找不到,则查找war部署的配置文件。
最不受欢迎的是3-它要求所有used应用检查两个位置的配置,你最终在服务器上得到两个不同的xml文件,具有不同的值,并且并不总是清楚使用哪一个。
下一个最受欢迎的是2- webapps可以在不知道多个配置文件的情况下编写,但是当有人从Tomcat管理器而不是使用您的脚本进行部署时,就会遇到问题。
Favorite为1。这在大多数情况下都有效。问题是当您没有数据库或想要配置连接到数据库的方式时。
发布于 2010-07-09 05:18:08
如果让文件在所有put应用程序中都可见不成问题,您可以将其放入$CATALINA_HOME/lib。
发布于 2014-02-07 15:32:58
一种解决方案是在部署war文件后修改属性文件,即使用ServletContext.getRealpath()方法获取实际路径,即文件在部署的服务器上的路径,然后修改该文件,它只修改容器中的文件,而不修改原始文件。所以如果它对你来说是重要的修改,你需要备份它。因此,您不需要重新部署war文件,因为它已经在修改已部署容器中的文件。
这个解决方案可以编辑网页文件夹中的文件,也可以从java类编辑。
如果你想要更多的描述或如何做,那么让我知道我已经做到了。
https://stackoverflow.com/questions/3206599
复制相似问题