迁移到 Tomcat9、Java17、Jersey、Weld

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

我有一个现有的 Java REST 服务,我正在尝试从 Tomcat8、Java8、Jersey(2.23) 和 Weld(2.4.8) 升级。我使用 Weld 进行 CDI,以便实例化我的服务类并将其注入到资源类中需要的位置。一切正常。我目前将此项目定义为 Gradle7 项目。

迁移到 Java17 似乎不需要任何更改。 迁移到 Tomcat9 只需要我从

javax.servlet:javax.servlet-api:3.+
更改为
jakarta.servlet:jakarta.servlet-api:4.+
。 我对 Jersey 和 Weld/CDI 感到困惑/困惑。

我也对

javax.ws.rs:javax.ws.rs-api:2.+
jakarta.ws.rs:jakarta.ws.rs-api:3.+
感到困惑。我很确定这与 Jersey 有关,并且只需要我将导入从
javax
切换到
jakarta

任何方向将不胜感激,因为我觉得我此时只是在旋转。

jersey tomcat9 java-17 jboss-weld
1个回答
0
投票

随着 Java EE / Jakarta EE 的发展,API 的版本也在发展。在某些时候,maven 工件名称从

javax
更改为
jakarta
,后来 java 包名称从
java
更改为
jakarta
。 8 有两个版本。

| EE Version  | java package names | artifact names | Servlet | JAX-RS |
|-------------|--------------------|----------------|---------|--------|
| Java EE 7   |    javax           | javax          | 3.1     |  2.0   |
| Java EE 8   |    javax           | javax          | 4.0     |  2.1   |
| Jakarta EE 8|    javax           | jakarta        | 4.0.4   |  2.1.6 |
| Jakarta EE 9|    jakarta         | jakarta        | 5.0     |  3.0   |
|Jakarta EE 10|    jakarta         | jakarta        | 6.0     |  3.1   |

请参阅 Tomcat 版本矩阵。您可以在那里找到受支持的 servlet 版本。由此,可以得出所需的 Jersey、CDI 和 Weld 版本。该表可能如下所示:

| Tomcat | Servlet | javax vs. jakarta | Jersey | JAX-RS | CDI | Weld |
|:------:|:-------:|:-----------------:|:------:|:------:|:---:|:----:|  
|  8.x   |  3.1    | javax             | 2.25.1 |   2.0  | 2.0 | 3.0  |
|  9.x   |  4.0    | javax/jakarta     | 2.26+  |   2.1  |2.0.2| 3.x  |
| 10.0.x |  5.0    | jakarta           | 3.0.x  |   3.0  | 3.0 | 4.x  |
| 10.1.x |  6.0    | jakarta           | 3.1.x  |   3.1  | 4.0 | 5.x  |

Jersey 从 2.34 开始部分支持 JDK 17,2.35 中更好。

所以你需要:

| Tomcat | Servlet | JAX-RS | Jersey| ------------------------------------------------------------------------ | 9.x | jakarta.servlet-api:4.0.4 | jakarta.ws.rs-api:2.1.6 | 2.35+ | | 10.0.x| jakarta.servlet-api:5 | jakarta.ws.rs-api:3.0 | 3.0.x | | 10.1.x| jakarta.servlet-api:6 | jakarta.ws.rs-api:3.1 | 3.1.x |
请不要使用 Jersey 2.35,最好从修复的最新版本开始。

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