Bug 53624

Summary: sendRedirect doesn't work after a dispatch through the AsyncContext
Product: Tomcat 7 Reporter: Rossen Stoyanchev <rstoyanchev>
Component: CatalinaAssignee: Tomcat Developers Mailing List <dev>
Severity: normal    
Priority: P2    
Version: 7.0.29   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description Rossen Stoyanchev 2012-07-30 19:07:39 UTC
A call to sendRedirect after AsyncContext.dispatch doesn't redirect and returns with a 200 status code instead.

A project demonstrating the issue:

Build and deploy the source in the 'tomcat-issue-repro'. From the home page of the deployed application, select the "Redirect" scenario. The scenario involves Servlet "RedirectA" that creates a thread and dispatches to Servlet "RedirectB", which in turn redirects to Servlet "RedirectC" and that forwards to a simple JSP page. Instead of the JSP page rendering, you should see a blank page and the log output will show that processing ended at ServletC.

For details on the setup see WebAppInitializer.setupRedirectScenario(ServletContext).


FWIW if a forward is used instead of a dispatch from the async thread, the scenario works. To do that, modify the line that creates servlet "RedirectA" to be ForwardingAsyncServlet instead of DispatchingAsyncServlet.


This issue is very similar to 51197, which was marked resolved in 7.0.25. The current issue was tested against 7.0.29.
Comment 1 Mark Thomas 2012-08-14 22:39:05 UTC
This looks to have a different root cause.

This has been fixed in trunk and 7.0.x and will be included in 7.0.30 onwards.
Comment 2 Mark Thomas 2012-08-14 22:50:45 UTC
*** Bug 53627 has been marked as a duplicate of this bug. ***