Wildfly Undertow:jakarta.servlets.Servlet 未实现 javax.servlet.Servlet

Wildfly Undertow: jakarta.servlets.Servlet does not implement javax.servlet.Servlet

我正在尝试将一些 Servlet 从 javax 库迁移到 jakarta。更改非常简单,但是,当我尝试在 Wildfly 23 上 运行 它们时,我收到此错误消息:

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

这个 servlet(用于 JAXWS,但这不是重点)和我自己的 servlet 都会出现这种情况,如下所示:

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 版。 servlet 在 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 文件中删除此声明,则不会部署 servlet。尽管如此,它有 @WebServlet 注释,这应该使 Wildfly 自动发现 Servlet。

我想 undertow 检查每个在 web.xml 文件中声明的 servlet 是否扩展 javax.servlet.Servlet,当然 jakarta HttpServlet 扩展 jakarta.servlets.Servlet,不是 javax.servlets.Servlet.

我做错了什么吗?

此致。

您需要使用 WildFly Preview 以获得 JakartaEE 9 支持,默认的 WildFly 发行版仍然是 Java EE / Jakarta EE 8