diff --git a/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java b/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java index c65969a4e8..6c5449a644 100644 --- a/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/http/server/reactive/ServletHttpHandlerAdapter.java @@ -90,12 +90,14 @@ public class ServletHttpHandlerAdapter extends HttpHandlerAdapterSupport @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws IOException { + // Start async before Read/WriteListener registration + AsyncContext asyncContext = servletRequest.startAsync(); + ServletServerHttpRequest request = new ServletServerHttpRequest( ((HttpServletRequest) servletRequest), getDataBufferFactory(), getBufferSize()); ServletServerHttpResponse response = new ServletServerHttpResponse( ((HttpServletResponse) servletResponse), getDataBufferFactory(), getBufferSize()); - AsyncContext asyncContext = servletRequest.startAsync(); asyncContext.addListener(new EventHandlingAsyncListener(request, response)); HandlerResultSubscriber resultSubscriber = new HandlerResultSubscriber(asyncContext);