[spring-projects/spring-boot]Spring Boot 不适用于 Tomcat 10

2020-07-20 251 views
3

我必须将 Spring boot 使用的 Tomcat 版本从 9.0.36 更改为 10.0.0-M7。 Spring Boot 找到了依赖项,我在类路径中看到它们:

C:\Users....m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.0.0-M7\tomcat-embed-core-10.0.0-M7.jar

但是,应用程序日志中缺少 Tomcat 初始化部分,并且配置的端口上没有侦听器。

当我向应用程序类添加 @ServletComponentScan 注释时,应用程序无法启动:

org.springframework.beans.factory.BeanCreationException:创建名称为“servletComponentRegisteringPostProcessor”的bean时出错:通过构造函数实例化Bean失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet

看起来 Spring boot 不知道 Tomcat 10 API 中的 javax -> jakarta 更改。我正在使用最新的 2.3.1-RELEASE 版本的 Spring Boot。

回答

7

Spring Boot 尚不兼容 jakarta 命名空间更改。此更改需要首先在 Spring Framework 中实现 - 请参阅 spring-projects/spring-framework#25354

7

@bclozel 这是否意味着即使没有@ServletComponentScan我并不真正需要的 ,它也无法与 Tomcat 10 一起使用?我所需要的只是工作@RestController@GetMapping注释。

5

Spring MVC 依赖于其javax.servlet编程模型和基础设施中的命名空间,所以不,这是行不通的。能否详细说明为什么您选择 Tomcat 10 进行部署 - 有什么特殊原因吗?

0

当然。客户在我们的产品上执行入侵防御软件,发现 Tomcat 9.0.36 中存在一些漏洞,这些漏洞已在 10.0.0-M7 中修复。

2

由于这与 Tomcat 10 或 jakarta 命名空间更改并不严格相关,因此我将关闭此问题,并将其他贡献者指向 spring-projects/spring-framework#25354 作为 Spring Boot 中任何相关更改的阻止者。

7

Tomcat 9.0.39 存在漏洞(参考https://nvd.nist.gov/vuln/detail/CVE-2020-13943)。在我的场景中,我使用带有嵌入式 tomcat 应用服务器的 spring-boot 框架应用程序,漏洞影响了这些依赖项:

  • tomcat-embed-core-9.0.39.jar

  • tomcat-embed-jasper-9.0.39.jar

  • tomcat-embed-websocket-9.0.39.jar

spring-boot框架什么时候支持Tomcat 10?

tomcat9039-漏洞

8

CVE-2020-13943影响Tomcat 9.0.0.M1至9.0.37,即9.0.39不受影响。

Tomcat 10 从 到javax.*命名空间切换jakarta.*,因此将是一个重大的重大变化。 Spring Boot 可能会在 3.0 版本中与 Framework 6.0 一起支持它,但这将取决于生态系统的其他部分是否为这一举措做好了准备。

8

谢谢,我有预感可能是这样。我升级到tomcat10 springBoot不再工作

2

您好,我们什么时候可以期待 Spring Boot 框架支持 Tomcat 10(暂定日期)!

4

@Abhilashkongara 它将出现在 Spring Framework 6 / Spring Boot 3 中。我们目前没有计划或日期可以分享。

3

您好,我们什么时候可以期待 Spring Boot 框架支持 Tomcat 10(暂定日期)!

7

@Abhilashkongara 请不要多次向问题跟踪器添加相同的评论,它会向每个订阅者发送通知。请参阅上面的答案。