我正在从单租户数据库切换到多租户数据库。我想在 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)。也不确定我是否应该使用焊接或开放网络豆,不确定这是否重要。
为了让这个答案正式化,更新开发堆栈是一个巨大的 pom 文件头痛问题,这也教会了我很多东西。 解决方案- 将 RETEasy 切换到 Jersey。泽西岛与雅加达合作,我能够摆脱这种有趣的行为。查看 Maven 树很有帮助,但主要是切换依赖项并尝试找到可以很好地协同工作的正确版本。