2013-02-20 53 views
3

在部署之后更改app.xml中的web.xml(或者其他文件)是否明智?所有的应用程序服务器是否公开其部署/目录结构部署后更改web.xml

我宁愿在本地进行更改,重新构建战争(或.ear等),然后重新部署应用程序。

任何建议/评论。谢谢。

回答

2

关于你的第一个问题,它取决于资源的类型。对于类路径资源,可以覆盖应用程序服务器的类加载机制中具有较高优先级的任何目录中的文件(例如,如果使用Tomcat,则为$ CATALINA_HOME/lib)。对于像xml文件这样的xml文件,您可以用绝对路径在打包文件中声明外部实体,但必须确保文件将存在于目标服务器上。例如,打包的web.xml文件可能看起来像:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE document [ 
<!ENTITY webEntity SYSTEM 'C:\Temp\web.xml'> 
]> 
&webEntity; 

所以web.xml中的实际内容是文件C的内容:\ TEMP \ web.xml中。

总之,没有官方的方式来做到这一点,但有一些技巧。我想,人们所做的是为每个生产站点生成一个自定义软件包。有多种方式可以通过Maven像战争覆盖或分类器一样自动化。这里是an interesting link

关于你的第二个问题,我不会依赖这个假设。修改Tomcat服务器上的分解资源非常简单,但在JBoss AS上并不那么简单。

问候

+0

@BalusC注意这里:http://stackoverflow.com/questions/25928486/tomcat-include-another-xml-file-to-web-xml该实体的做法是一个XXE漏洞,是计划修补。我绝对不会走这条路。 https://bugzilla.redhat.com/show_bug.cgi?id=1069911 – JoshC13 2015-09-02 19:48:40