【发布时间】:2021-12-02 04:42:28
【问题描述】:
我正在升级我的 JEE 应用程序中的一些库,希望能解决一个奇怪的问题(请参阅JAX-RS integration test with Undertow failing in Jenkins but working locally)
在升级 restEasy 和 Weld 时,我的测试失败了,因为命名空间从 javax.servlet.ServletContext 更改为 jakarta.servlet.ServletContext 导致出现一些“内部”编译问题:
在我的依赖项中:
在weld-servlet-core 4.0.2.Final 中:
package org.jboss.weld.environment.undertow;
import io.undertow.servlet.ServletExtension;
import jakarta.servlet.ServletContext;
...
public class WeldServletExtension implements ServletExtension {
@Override
public void handleDeployment(DeploymentInfo deploymentInfo, ServletContext servletContext) {
...
}
}
在 undertow-servlet 2.2.7.Final 中:
package io.undertow.servlet;
import io.undertow.servlet.api.DeploymentInfo;
import javax.servlet.ServletContext;
public interface ServletExtension {
void handleDeployment(final DeploymentInfo deploymentInfo, final ServletContext servletContext);
}
这行不通,因为 WeldServletExtension 实际上没有在该设置中实现 ServletExtension:它使用 jakarta.servlet.ServletContext,而接口需要使用 javax.servlet.ServletContext
undertow-servlet:2.2.7.Final 由 resteasy-undertow:5.0.0.Beta1 传递(最新版本,2021 年 10 月起),我添加自己 weld-servlet-core:4.0.2.Final(也是最新版本:2021 年 7 月起)
查看 ServletExtension in its main branch,Undertow 仍在使用 javax.* 命名空间,而不是 jakarta.* - 自 2014 年以来一直没有更新。所以即使我使用的是 Undertow 最新版本(2.2.12.Final),我还是会有问题
所以我有点困惑......这里的诀窍是什么?升级到 RestEasy 5.x 并使用 Weld 后,我们不能使用 Undertow 吗?
【问题讨论】:
-
目前没有 RESTEasy 的 Jakarta REST 3.0 实现。虽然这即将到来,但没有官方日期自动取款机。我会说一个月内至少会有一个 alpha 版本。
标签: java jakarta-ee resteasy weld undertow