You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK11+WildFly27中使用HTTP-Proxy-Servlet报错,需替换javax为jakarta吗?

问题解答

报错信息

11:23:55,153 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.deployment.unit."proxy.war".undertow-deployment.UndertowDeploymentInfoService: org.jboss.msc.service.StartException in service jboss.deployment.unit."proxy.war".undertow-deployment.UndertowDeploymentInfoService: Failed to start service
        at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1731)
        at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
        at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.lang.IllegalArgumentException: UT010009: Servlet proxyHostServer of type class org.mitre.dsmiley.httpproxy.ProxyServlet does not implement jakarta.servlet.Servlet
        at io.undertow.servlet@2.3.0.Final//io.undertow.servlet.api.ServletInfo.<init>(ServletInfo.java:98)
        at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.createServletConfig(UndertowDeploymentInfoService.java:660)
        at org.wildfly.extension.undertow@27.0.1.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.start(UndertowDeploymentInfoService.java:288)
        at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
        at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)

核心原因

错误的关键在于:ProxyServlet 实现的是旧版Java EE规范的 javax.servlet.Servlet 接口,但WildFly 27基于Jakarta EE 10规范,使用的是 jakarta.servlet.Servlet 接口——两者属于不同的API体系,类加载时无法兼容,因此容器判定该Servlet不符合要求。

问题解答

  • 该组件能否直接使用?
    不能直接在WildFly 27中使用,组件依赖的Servlet API版本与容器要求的Jakarta Servlet API不兼容。

  • 是否需要将javax替换为jakarta?
    需要。可以通过两种方式处理:

    • 手动修改组件源码:将所有 javax.servlet 相关的导入语句替换为 jakarta.servlet,重新编译打包成适配Jakarta版本的JAR;
    • 寻找适配版本:查看该组件是否有官方或社区维护的Jakarta分支,直接使用适配后的版本。
  • 此问题是否因WildFly导致,更换Tomcat是否不会出现?
    这不是WildFly独有的问题,本质是Servlet API版本迭代的兼容性问题:

    • 若更换为Tomcat 10及以上版本,同样会触发该错误,因为Tomcat 10+也切换到了Jakarta Servlet API(jakarta.servlet 包);
    • 只有使用Tomcat 9及以下版本(仍使用旧版 javax.servlet 包),才能直接兼容原组件。

内容的提问来源于stack exchange,提问作者yaron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:50:33