将 servlet 4.0.1 升级到 servlet 5.0
Posted
技术标签:
【中文标题】将 servlet 4.0.1 升级到 servlet 5.0【英文标题】:upgrade servlet 4.0.1 to servlet 5.0 【发布时间】:2021-10-12 20:36:51 【问题描述】:我正在。我正在为 servlet 4.0.1 使用以下 maven 依赖项
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
当我升级到 servlet 5.0 时,我看到有一个新术语 'Jakarta' 并且 servlet5 带有 Jakarta API,具有以下 maven 依赖项。
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
</dependency>
所以,我尝试在互联网上搜索但找不到以下问题
-
请解释一下这个新术语 Jakarta,比如它是如何出现的?
这是使用 Jakarta API 升级 servlet 5.0 的唯一方法。我们可以使用旧的“javax.servlet-api”吗?
我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗?
https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?
如果有的话,还请推荐任何文档以供参考
【问题讨论】:
您希望 Servlet 5 提供哪些具体功能? 升级到servlet 5.0的主要原因是Jetty11。因为这是 Jetty11 的先决条件。 @AshishGoyanka 那么您可能只需要在部署描述符中更改 servlet 规范版本... 【参考方案1】:Servlet 规范
你说:
我正在将 servlet 4.0.1 升级到 servlet 5.0。
除了从 javax.*
到 jakarta.*
包命名之外,Servlet 规范在 4.0 和 5.0 之间没有显着变化。
从 Servlet 4 迁移到 Servlet 5,您将受益于任何新功能或改进。
码头
你评论过:
升级到 servlet 5.0 的主要原因是 Jetty11。因为这是 Jetty11 的先决条件。
Jetty 10 与 Jetty 11 相同,但包名称从 javax.*
更改为 jakarta.*
。这两个版本是并行开发的。 Jetty 11 中没有比 Jetty 10 更好的功能或改进。
(顺便说一句,Apache Tomcat 9.x 和 Tomcat 10.0 也是如此,包命名更改的并行版本。)
如果您现在想保守一点,请坚持使用 Jetty 10 和 javax.*
包命名。如果你想为未来做准备,请使用 Jetty 11 和jakarta.*
包命名。
many articles, presentations, and interviews 是关于 Oracle 公司将 Java EE 的控制权移交给 Eclipse 基金会以及随之而来的更名为 Jakarta EE 的过渡。您确实应该对这个 Oracle 到 Jakarta 的主题进行一些基本的行业研究,以了解这些变化。 Start with Wikipedia.
【讨论】:
【参考方案2】:请解释一下这个新术语 Jakarta,比如它是如何出现的?
Oracle 维护 Java EE,2017 年 9 月 Oracle 宣布 Java EE 将提交给 Eclipse 基金会。 “Java”是 Oracle 拥有的商标,因此“Java EE”更名为“Jakarta EE”。
这是使用 Jakarta API 升级 servlet 5.0 的唯一方法。我们可以使用旧的“javax.servlet-api”吗? 我知道,Jakarta 也在 4.0 版本中,但我们没有使用它。它与 servlet 4 没有任何依赖关系吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
包含 Servlet 4.x 的 Jakarta EE 8 的第一个版本,它与 Java EE 8 兼容。Java EE 8 和 Jakarta EE 8 都使用 javax.*
命名空间。
无论你使用哪一个都可以互相工作。
将 servlet 4.0 升级到 servlet 5.0 还需要做哪些其他事情?
要升级到 Servlet 5.0,您必须使用 Jakarta EE 9。从 Jakarta EE 9 起,命名空间从 javax.*
更改为 jakarta.*
,因此您必须将所有 javax.*
包导入更改为 jakarta.*
包。
另外,如果您使用任何其他库,则必须使用兼容版本。
Jakarta EE Web API 的 maven 依赖项如下。
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>9.1.0</version>
<scope>provided</scope>
</dependency>
参考号:GitHup Template for Jakarta EE 9 Web
【讨论】:
以上是关于将 servlet 4.0.1 升级到 servlet 5.0的主要内容,如果未能解决你的问题,请参考以下文章