Подводное течение диких мух: джакарта.сервлеты.Сервлет не реализует javax.servlet.Сервлет

#java #servlets #jakarta-ee #wildfly #undertow

Вопрос:

Я пытаюсь перенести некоторые сервлеты из библиотек javax в Джакарту. Изменения довольно просты, но когда я пытаюсь запустить их на Wildfly 23, я получаю это сообщение об ошибке:

Servlet JAX-WS-Service of type class com.sun.xml.ws.transport.http.servlet.WSServlet does not implement javax.servlet.Servlet

Это происходит для этого сервлета (используется для JAXW, но дело не в этом), но также и с моими собственными сервлетами, которые выглядят так:

 import jakarta.servlet.ServletException;
import jakarta.servlet.ServletRequest;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.Cookie;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;

@WebServlet(name = "entrada", loadOnStartup = 1)
public class ServletEntrada extends HttpServlet
 

Я использую Jakarta servlet-api версии 5.0.0. Сервлеты объявляются в web.xml файле следующим образом:

 <servlet>
    <servlet-name>ServletEntrada</servlet-name>
    <servlet-class>com.telventi.framework.web.ServletEntrada</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
 

Если я оставлю это объявление включенным web.xml , я получу ошибку, о которой упоминал, ServletEntrada does not implement javax.servlet.Servlet .

Если я удалю это объявление из web.xml файла, сервлет не будет развернут. Несмотря на то, что у него есть @WebServlet аннотация, которая должна автоматически обнаруживать сервлет Wildfly.

Я предполагаю undertow , что проверяет каждый сервлет , объявленный в web.xml файле, если они расширяются javax.servlet.Servlet , но, конечно HttpServlet jakarta.servlets.Servlet , расширение не javax.servlets.Servlet распространяется .

Я делаю что-нибудь не так?

С уважением.

Ответ №1:

Вам необходимо использовать предварительный просмотр WildFly для поддержки JakartaEE 9, дистрибутив WildFly по умолчанию по-прежнему Java EE / Jakarta EE 8

Комментарии:

1. Да, похоже, это та же проблема, что и с веб-сервисами, я не понимал, что есть связь. Я постараюсь и дам вам знать, если это сработает! Спасибо!