gpt4 book ai didi

spring-boot - 如何配置 Tomcat 以在 Azure 应用服务上使用 HTTP2?

转载 作者:行者123 更新时间:2023-11-28 22:23:51 26 4
gpt4 key购买 nike

我尝试在 Azure 应用服务(Windows、java 8、tomcat 8.5)上部署一个 spring boot 应用程序。

这是一个使用服务器发送事件的 spring webflux 应用程序,所以我需要有 http2 支持。

然而,即使在应用服务中启用了 http2,我也注意到 SSE 无法正常工作。查看日志,我发现它仍在使用 HTTP/1.1。

来自 kudu D:\home\LogFiles\http\RawLogs

127.0.0.1 - - [12/Nov/2019:20:19:43 +0000] "GET /api/rooms/someroom/users/Gms_2290/info/subscribe HTTP/1.1" 200 5 144
127.0.0.1 - - [12/Nov/2019:20:19:44 +0000] "GET /api/rooms/someroom/users/Gms_2290/music/subscribe HTTP/1.1" 200 5 16
127.0.0.1 - - [12/Nov/2019:20:19:46 +0000] "GET /api/rooms/someroom/users/Gms_2290/heartbeat HTTP/1.1" 200 5 142
127.0.0.1 - - [12/Nov/2019:20:19:46 +0000] "GET /api/rooms/someroom/users/Gms_2290/info/subscribe HTTP/1.1" 200 5 19
127.0.0.1 - - [12/Nov/2019:20:19:48 +0000] "GET /api/rooms/someroom/users/Gms_2290/music/subscribe HTTP/1.1" 200 5 32
127.0.0.1 - - [12/Nov/2019:20:19:49 +0000] "GET /api/rooms/someroom/users/Gms_2290/heartbeat HTTP/1.1" 200 5 16

我尝试过的

  • 我尝试使用 java 版本(在 8 和 9 之间切换)
  • 我尝试使用 Tomcat 版本(8.5 和 9)

Linux 视角

我首先尝试将应用程序部署到 Linux 应用服务(使用 java 8 和 Tomcat 8.5)

这导致了日志流中的以下错误

java.lang.IllegalStateException: Async support must be enabled on a servlet and for all filters involved in async request processing

我怀疑 Tomcat 可能需要一些额外的配置才能使用 App Service SSL 并因此允许 http2,但我找不到配置所用 Tomcat 的好方法。

感谢任何帮助!

最佳答案

我验证了使用 SSE 的 Spring WebFlux 应用程序在作为 jar 文件运行时在 App Service Linux 中运行良好(使用带有 HTTP 1.1 的 Java SE 8 产品)。因此,您遇到的问题似乎与 Tomcat 配置有关。

为了调查,您能否分享在本地 Tomcat 上运行良好但在 App Service 中的 Tomcat 上运行时失败的重现?

关于spring-boot - 如何配置 Tomcat 以在 Azure 应用服务上使用 HTTP2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58834426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com