tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 50753] New: Asynchronous responses do not contain set response headers
Date Thu, 10 Feb 2011 17:46:59 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=50753

           Summary: Asynchronous responses do not contain set response
                    headers
           Product: Tomcat 7
           Version: 7.0.6
          Platform: PC
        OS/Version: Mac OS X 10.5
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: mircea.toma@icesoft.com


Using a servlet with asynchronous support enabled and the response headers set
just before AsyncContext.complete() method is called fails to send the headers
over the wire. More precisely if the headers are set on the HttpServletRequest
on a different thread than the request thread the headers are not sent. 

A simple test was devised to showcase the issue.

Setting the headers on the request thread before or after the AsyncContext is
acquired *succeeds* in sending the headers over the wire: 

    protected void doGet(HttpServletRequest request, final HttpServletResponse
r) throws ServletException, IOException { 
       final AsyncContext ctx = request.startAsync(); 
        r.setHeader("A", "xyz"); 
        r.setContentType("text/plain"); 
        r.setContentLength("------".getBytes().length); 
        r.getWriter().print("------"); 
        ctx.start(new Runnable() { 
            public void run() { 
                try { 
                    Thread.sleep(5000); 
                    ctx.complete(); 
                } catch (Exception e) { 
                    e.printStackTrace();
                } 
            } 
        }); 
    } 

Setting the headers just before the response is sent *does not succeed* in
actually sending the headers over the wire: 

    protected void doGet(HttpServletRequest request, final HttpServletResponse
r) throws ServletException, IOException { 
       final AsyncContext ctx = request.startAsync(); 
        ctx.start(new Runnable() { 
            public void run() { 
                try { 
                    Thread.sleep(5000); 
                    r.setHeader("A", "xyz"); 
                    r.setContentType("text/plain"); 
                    r.setContentLength("------".getBytes().length); 
                    r.getWriter().print("------"); 
                    ctx.complete(); 
                } catch (Exception e) { 
                    e.printStackTrace();
                } 
            } 
        }); 
    }

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message