Servlet 3.1 在 web.xml 文件包含 metadata-complete="true" 属性时如何处理 <absolute-ordering> 元素方面引入了更改。
在 Servlet 3.0 中,在将 metadata-complete 属性设置为 "true" 时,将使用所有 Web 片段归档。在 Servlet 3.1 中,<absolute-ordering> 元素会被视为完整列表,因此将不处理 <absolute-ordering> 元素中未列出的 Web 片段。
Servlet 3.1 功能部件可通过排除先前包含的 Web 片段来更改现有应用程序行为。
此规则将标记 web-fragment.xml 文件中的 <name>B</name> 元素,前提是 web.xml 文件包含 metadata-complete="true" 属性且 <absolute-ordering> 元素不包含 Web 片段名称条目。
以下示例说明了使用 web.xml 文件和 web-fragment.xml 文件组合时的行为更改:
web.xml:
<absolute-ordering> <name>A</name> <others/> </absolute-ordering>
web-fragment.xml:
<web-fragment> <name>B</name> </web-fragment>
在 Servlet 3.0 中,将会处理 Web 片段 B。在 Servlet 3.1 中,将不处理 Web 片段 B。要在处理中包含 Web 片段 B,请在 web.xml 文件中的 <absolute-ordering> 元素内的相应位置处添加 <name>B</name> 元素。
有关 Servlet 3.1 行为更改的更多信息,请参阅以下资源:Servlet 3.1 behavior changes。