Servlet 3.1 по-другому обрабатывает элемент
<absolute-ordering>, если файл
web.xml содержит атрибут metadata-complete="true".
В Servlet 3.0 при наличии значения "true" в атрибуте metadata-complete используются все архивы веб-фрагментов. В Servlet 3.1 предполагается, что элемент
<absolute-ordering> содержит
исчерпывающую информацию, поэтому те веб-фрагменты, которые не указаны в
элементе <absolute-ordering>, исключаются из обработки.
Исключение тех веб-фрагментов, которые ранее были включены, при использовании
компонента Servlet 3.1 может привести к изменению алгоритма работы приложения.
Это правило отмечает элемент
<name>B</name> в файле
web-fragment.xml, если файл
web.xml содержит атрибут
metadata-complete="true", а элемент <absolute-ordering> не содержит запись с именем веб-фрагмента.
Приведенный ниже пример демонстрирует изменение алгоритма работы при использовании файла 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 веб-фрагмент B включается в обработку. В Servlet 3.1 он не включается в обработку. Для включения веб-фрагмента B в обработку необходимо добавить элемент <name>B</name> в нужную позицию в элементе <absolute-ordering> из файла web.xml.
Дополнительные сведения об изменении поведения Servlet 3.1 см. в ресурсе: Изменение поведения Servlet 3.1.