Отключите обработку аннотаций, но включите функцию веб-фрагментов в сервлет api 3.0 (Tomcat7)
Я пробовал Tomcat 7.0 и Servlet API 3.0.
У меня было приложение для Servlet API 2.5. Поэтому я отредактировал web.xml, чтобы настроить его для Servlet API 3.0. После изменения время начала Tomcat увеличилось на 14 секунд.
Итак, я установил <web-app metadata-complete="true" ...
, и время начала Tomcat вернулось к нормальному состоянию, потому что tomcat не сканирует каждый класс для аннотаций. Это хорошо, но функция web-fragment.xml также отключена.
Интересно, можно ли отключить аннотационное сканирование Tomcat, но разрешить обработку web-фрагмента .xml.
Ответы
Ответ 1
Оба фрагмента и аннотации являются метаданными приложения. Таким образом, метаданные-полные применяются как для обработки аннотаций, так и для обработки фрагментов.
Если для web.xml установлено metadata-complete, обработка обработки аннотаций и фрагментов отключена.
Но в метаданных-complete также может быть установлен web-fragments.xml. Таким образом, можно делать выборочную обработку аннотаций и фрагментов.
Включение полного набора метаданных в web.xml и отключение в web-fragments.xml будет обрабатывать фрагменты, но отключает обработку аннотаций для классов под web-fragments.xml
Ответ 2
Рассмотрим использование элемента "абсолютного упорядочения" в вашем web.xml.
Servlet API 3.0 Final Spec описывает его использование в разделе 8.2.2 "Заказ web.xml и web-fragment.xml".
Вы можете указать точные веб-фрагменты, которые нужно обработать, отключить обработку аннотаций классов в банке веб-фрагмента ( "метаданные-полные" в веб-фрагменте из списка) и, конечно же, исключить другие баночки из обработки с помощью такого рода включения веб-фрагмента.