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

我曾尝试在Spring App Service(Windows,java 8和tomcat 8.5)上部署Spring Boot应用程序,以作为战争。

这是一个用于服务器发送事件的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应用服务(带有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。

感谢您的帮助!

zhyl1109 回答:如何将Tomcat配置为在Azure App Service上使用HTTP2?

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

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

本文链接:https://www.f2er.com/3111225.html

大家都在问