У меня есть простой класс сервлета:
import javax.servlet.annotation.WebServlet
@WebServlet("/servlet")
class MyServlet extends HttpServlet { ... }
с module=annotations
все отлично работает на Jetty 9.4 и 10.0.beta0, MyServlet обнаруживается автоматически со следующим сообщением журнала:
INFO: oeja.AnnotationConfiguration: main: Истекшее время сканирования аннотаций = 309 мс
Затем я добавляю пустой файл WEB-INF/web.xml
:
<web-app>
</web-app>
и сканирование аннотаций не выполняется Это больше не происходит, без сообщения журнала запросы сервлета возвращают 404. Я также попытался добавить атрибут metadata-complete="false"
, но без разницы. Согласно Sevlet 4.0 spe c:
Если для параметра metadata-complete установлено значение «true», инструмент развертывания проверяет только веб-фрагмент. xml и должен игнорировать аннотации, такие как @WebServlet, @WebFilter и @WebListener, присутствующие в файлах классов фрагмента. Если метаданные не указаны или для него задано значение «false», инструмент развертывания должен проверить файлы классов на наличие метаданных.
сканирование аннотаций должно выполняться, если я явно не укажу metadata-complete="true"
iiu c. У меня не было этой проблемы с Apache Tomcat. Это ошибка или я что-то упустил?