天天看点

《Java EE 7精粹》—— 2.6 Web Fragment

本节书摘来异步社区《java ee 7精粹》一书中的第2章,第2.6节,作者:【美】arun gupta,更多章节内容可以访问云栖社区“异步社区”公众号查看。

包含在库或框架jar包的meta-inf目录中的一个web fragment片段是部分或全部在web.xml文件中。如果这个框架绑定在web-inf/lib目录中,容器会选择和配置框架,而无需开发人员显示地做到这一点。

web fragment可以包括几乎所有web.xml中指定的元素。然而,其顶级元素必须是web-fragment,并且相应的文件必须命名为webfragment.xml。这将允许web应用程序逻辑分区:

《Java EE 7精粹》—— 2.6 Web Fragment

开发人员可以指定在web.xml和web-fragment.xml中定义的资源的加载顺序。web.xml中的元素用于指定资源加载的确切顺序,web-fragment.xml中的元素用于指定相对排序。这两个命令是互斥的,绝对顺序覆盖相对顺序。

绝对顺序包含一个或多个元素用于指定资源的名称,元素定义的顺序即是加载顺序。元素允许指定其他没有命名的资源的加载顺序:

《Java EE 7精粹》—— 2.6 Web Fragment

在这段代码中,web.xml中指定的资源先被加载,随后是myservlet和myfilter。

元素中的零个或一个和元素用于指定资源,使web-fragment命名的资源在其之前、之后被加载:

《Java EE 7精粹》—— 2.6 Web Fragment

这段代码将要求容器在加载myservlet资源(在其他地方定义的)之后,加载myfilter资源。

如果web.xml中metadata-complete设置为true,那么web-fragment.xml文件不会被处理。解决web.xml和web-fragment.xml之间的冲突时,web.xml文件具有最高的优先级。

如果一个web-fragment.xml文件没有元素并且web.xml没有元素,资源被假定不具有任何顺序依赖性。