[我尝试将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
我尝试过的事情
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。
感谢您的任何帮助!
我已验证使用SSE的Spring WebFlux应用程序在以jar文件运行时(使用带有HTTP 1.1的Java SE 8提供)在App Service Linux中可以正常工作。因此,您遇到的问题似乎与Tomcat配置有关。
为了进行调查,您能否共享在Tomcat上可以正常运行但在Tomcat中在App Service中运行时失败的repro?