升级后的开发堆栈,CDI 为空

问题描述 投票:0回答:1

我正在从单租户数据库切换到多租户数据库。我想在 hibernate 6 中使用“@TenantId”注释。为了使用 hibernate 6,我需要从 java ee 升级到 jakarta ee。这还要求我将 Tomcat 从 9 更新到 10.1.24。此外,我还从 Java 8 升级到 21。除了上下文依赖注入 (CDI) 之外,一切都对我有用,它对我尝试注入的任何内容都返回 NULL。

我正在使用这样的资源-

@Path("my-resource")
@ApplicationScoped
public class MyResource {

    @Inject
    private MyService myService;

    @Path("")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Response getList() {
        try {
            return Response.ok(myService.findAll(false)).build();
        } catch (Exception e) {
            return Response.serverError().entity("Error: This is where myService was null").build();
        }
    }

我的服务是这样开始的 -

@ApplicationScoped
public class MyService implements Serializable { // followed by the function that never gets reached

我尝试过的一些事情- 1.添加了一个空的bean xml,带有发现模式all 2.尝试过weld-servlet-shaded和openwebbeans pom依赖项 3.尝试在上下文 xml 中使用开放的 webbeans 监听器 4.尝试过不同类型的注解,例如@RequestScoped或@ApplicationScoped

寻找任何建议或更新了开发堆栈的人,并且可能知道我错过的一些更改。

仅供参考-我正在使用具有 Maven 架构的 Java 后端(不是 Spring)。也不确定我是否应该使用焊接或开放网络豆,不确定这是否重要。

jax-rs cdi jakarta-migration tomcat10
1个回答
0
投票

为了让这个答案正式化,更新开发堆栈是一个巨大的 pom 文件头痛问题,这也教会了我很多东西。 解决方案- 将 RETEasy 切换到 Jersey。泽西岛与雅加达合作,我能够摆脱这种有趣的行为。查看 Maven 树很有帮助,但主要是切换依赖项并尝试找到可以很好地协同工作的正确版本。

© www.soinside.com 2019 - 2024. All rights reserved.