O Servlet 3.1 apresenta uma mudança na forma como o elemento
<absolute-ordering> é processado quando
o arquivo web.xml contém o atributo metadata-complete="true".
No
Servlet 3.0, quando o atributo metadata-complete está configurado como
"true", todos os archives de fragmento da web são usados. No Servlet 3.1, o
elemento <absolute-ordering> é considerado estar
completo, o que faz com que os fragmentos da web que não estão listados no elemento
<absolute-ordering> sejam excluídos do
processamento.
O recurso do Servlet 3.1 pode mudar o comportamento do aplicativo
existente, excluindo fragmentos da web que foram anteriormente incluídos.
Essa regra sinalizará o elemento
<name>B</name> no arquivo
web-fragment.xml se o arquivo
web.xml contiver o atributo
metadata-complete="true" e o elemento <absolute-ordering>
não contiver uma entrada para o nome do fragmento da web.
O exemplo a seguir demonstra a mudança de comportamento quando você usa uma combinação de um arquivo web.xml e um arquivo web-fragment.xml:
web.xml:
< span class= "XmlElement"> < absolute-ordering> < /span> < span class= "XmlElement"> < name> < /span> A < span class="XmlElement"> < /name> < /span> < span class= "XmlElement"> < others/> < /span> < span class="XmlElement"> < /absolute-ordering> < /span>
web-fragment.xml:
< span class= "XmlElement"> < web-fragment> < /span> < span class= "XmlElement"> < name> < /span> B < span class="XmlElement"> < /name> < /span> < span class= "XmlElement"> < /web-fragment> < /span>
No Servlet 3.0, o fragmento da web B é incluído no processamento. No Servlet 3.1, ele não é incluído. Para incluir o fragmento da web B no processamento, inclua um elemento <name>B</name> na posição apropriada dentro do elemento <absolute-ordering> no arquivo web.xml.
Para mais informações sobre mudanças de comportamento do Servlet 3.1, veja o recurso a seguir: Mudanças de comportamento do Servlet 3.1.