【问题标题】:Embedded Tomcat 10 does not listen on port in Spring Boot application嵌入式 Tomcat 10 不在 Spring Boot 应用程序中侦听端口
【发布时间】:2020-11-09 19:22:25
【问题描述】:

我有一个使用 Tomcat 的 Spring Boot 应用程序。使用 9.0.36 版本运行良好,使用 10.0.0-M7 失败。 pom.xml中与Tomcat相关的部分是:

    </properties>
            <tomcat.version>10.0.0-M7</tomcat.version>
    </properties>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

application.yml 中负责 Tomcat 的部分:

server:
  port: 28088
  servlet:
    contextPath: /rest
  main:
    web-application-type: servlet
  tomcat:
    max-threads: 64

使用 Tomcat 9.0.36,一切都很好。来自日志:

2020-07-20 16:56:10.596  INFO 8268 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2020-07-20 16:56:10.637  INFO 8268 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 35ms. Found 0 MongoDB repository interfaces.
2020-07-20 16:56:11.493  INFO 8268 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 28088 (http)
2020-07-20 16:56:11.505  INFO 8268 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-07-20 16:56:11.506  INFO 8268 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.36]
2020-07-20 16:56:11.689  INFO 8268 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/rest]   : Initializing Spring embedded WebApplicationContext
2020-07-20 16:56:11.689  INFO 8268 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2278 ms
2020-07-20 16:56:12.229  INFO 8268 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[...:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}

但是一旦我用 10.0.0-M7 替换 9.0.36,它就不会启动 Tomcat:

2020-07-20 16:59:24.184  INFO 20036 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data MongoDB repositories in DEFAULT mode.
2020-07-20 16:59:24.242  INFO 20036 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 51ms. Found 0 MongoDB repository interfaces.
2020-07-20 16:59:25.298  INFO 20036 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[...:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms'}

有人成功使用嵌入式 Tomcat 10 和 Spring Boot 吗?我已经升级到最新的 Spring Boot 2.3.1-RELEASE 没有用。

【问题讨论】:

  • Tomcat 9.0.36 是 Spring Boot 2.3.1 附带的版本。您是否指定了一个带有嵌入式 Tomcat 10 的外部 jar 来启动它? (甚至还有嵌入式版本吗?)我认为你最好在自己的 Tomcat 服务器实例上部署战争。

标签: spring-boot tomcat


【解决方案1】:

好的,得到了​​ Spring Boot 团队的答复。简而言之,Spring Boot 尚不兼容 Tomcat 10。

https://github.com/spring-projects/spring-boot/issues/22414

【讨论】:

  • 不仅仅是 Spring Boot 不兼容,整个 Spring 生态系统也不兼容,因为 Tomcat10 使用新的 JakartaEE 命名空间,而到目前为止,所有东西都是使用 JavaEE 命名空间构建的。因此,如果不进行所有更改(或同时支持两者),它将不会在不久的将来得到支持(尽管我相信可能会在 Spring 6 安排一些事情)。
猜你喜欢
  • 2017-06-27
  • 2017-11-21
  • 2017-10-21
  • 1970-01-01
  • 2014-09-19
  • 2018-05-29
  • 1970-01-01
  • 2017-03-26
  • 2016-05-02
相关资源
最近更新 更多