如何配置Tomcat在Azure App Service上使用HTTP2?

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

[我尝试将Spring Boot应用程序部署为对Azure应用程序服务(Windows,java 8,tomcat 8.5)的战争。

这是一个用于服务器发送事件的Spring Webflux应用程序,因此,我需要具有http2支持。

但是即使在App Service中启用了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 App Service(使用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。

感谢您的任何帮助!

spring-boot tomcat azure-web-sites spring-webflux http2
1个回答
0
投票

我已验证使用SSE的Spring WebFlux应用程序在以jar文件运行时(使用带有HTTP 1.1的Java SE 8提供)在App Service Linux中可以正常工作。因此,您遇到的问题似乎与Tomcat配置有关。

为了进行调查,您能否共享在Tomcat上可以正常运行但在Tomcat中在App Service中运行时失败的repro?

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