Отключить обработку аннотаций, но включить функцию веб-фрагментов в сервлете api 3.0 (Tomcat7) - PullRequest
17 голосов
/ 19 января 2011

Я пробую 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-фрагмент.xml также отключена.

Интересно, можно ли отключить сканирование аннотаций Tomcat, но включить обработку web-фрагмент.xml.

Ответы [ 2 ]

3 голосов
/ 20 сентября 2013

Подумайте об использовании элемента абсолютного порядка в вашем файле web.xml. Servlet API 3.0 Final Spec описывает его использование в разделе 8.2.2 «Упорядочивание web.xml и web-фрагмент.xml».

Вы можете указать точные веб-фрагменты для обработки, отключить обработку аннотаций классов в банке веб-фрагмента ('metadata-complete' в веб-фрагменте из списка) и, конечно, исключить другие банки, обработанные этим видом включения веб-фрагментов.

3 голосов
/ 31 мая 2011

И фрагменты, и аннотации являются метаданными приложения. Таким образом, полная метаданных применяется как для обработки аннотаций, так и для обработки фрагментов. Если для web.xml задано метаданные-полные, обработка аннотаций и фрагментов отключена .

Но для метаданных можно также указать web-fragments.xml. Таким образом, можно делать выборочную обработку аннотаций и фрагментов.

Включение метаданных-завершения в web.xml и отключение в web-fragments.xml приведет к обработке фрагментов, но отключит обработку аннотаций классов в web-fragments.xml

...