我可以在一个Web应用程序中有两个web.xml文件吗?

时间:2013-12-04 06:50:06

标签: java java-ee spring-mvc struts2

我可以拥有一个包含多个web.xml文件的应用程序吗?并且两个应用程序是否可以有父子关系,因此有两个web.xml?

2 个答案:

答案 0 :(得分:6)

对于下面的servlet 3.0,你不能。

如果您使用3.0,则会有possibility

  

在JSR 315:Java Servlet 3.0规范中,引入了 web-fragment.xml ,用于封装在 WEB-INF / lib 下的库jar的可插拔性。 web.xml和web-fragment.xml的内容几乎相同。可以在那里定义servlet,过滤器和监听器。也可以在给定的 web-fragment.xml 中指定metadata-complete = true。在后一种情况下,将跳过该jar中类的注释处理。使用 web-fragment.xml ,库jar可以是自包含的,并提供与Web相关的元数据信息。

当然,有两个xml会产生混淆,除此之外,如果你解释了你的确切要求,你会得到一个很好/标准的解决方案。

答案 1 :(得分:0)

  

Can i Have a single application with more than one web.xml files?

这取决于方法。

方法1

如果你在一个有某些servlet的环境中工作(我记得我在一个有Minification servlet的旧项目上工作,其目的是在部署时缩小JS / CSS)和类似的设置例如,您不希望在开发环境中配置某些用户约束和领域,因为您将使用爆炸的JS / CSS,并且您希望绕过应用程序中配置的基本安全约束,只是为了便于开发,但您希望它们全部在QA上进行了测试,因此为同一个应用程序配置2个不同的部署描述符是“有点”的。其中只有基本设置才能部署应用程序以进行开发,另一方面,您需要在QA上从A到Z测试所有生产设置。

但是,我想再次明确表示您可以仅使用一个部署描述符来部署应用程序。

方法2

让我们假设您希望将部署描述符分解为一小部分以实现可插拔性,例如将Servlet定义在一个文件中,并在其他文件中定义您的安全性约束。这些文件或web-fragments.xml只能与Servlet3.0一起使用。如果仔细查看这些片段的使用方式,在部署时,所有这些片段都会被容器合并并作为“单个”文件(部署描述符)读取。

最后,我们再次为应用程序提供了一个SINGLE部署描述符。