Re: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192
You can't mix page directives with snippets. Page directives occur at page translation time (before the compilation process) To eliminate buffering - try <[EMAIL PROTECTED] buffer='none'%> -Tim Richard Mundell wrote: Thanks Tim. out.flush() wasn't doing anything unless there was already 8KB in the buffer. But, the JSP page directive helped: Before setting the JSP page directive, the pre-compiled .java file that Tomcat was creating had... pageContext = _jspxFactory.getPageContext(this, request, response, "ErrorPage.jsp", true, 8192, true); ...and now, with <[EMAIL PROTECTED] buffer="1kb"%>, it uses... pageContext = _jspxFactory.getPageContext(this, request, response, "ErrorPage.jsp", true, 1024, true); It looks like the buffer can only be specified in 1kb increments, but a 1KB keep-alive being sent every 30 seconds is better than an 8KB keep-alive. Is there a way to make the JSP page directive conditional? Basically, I only want to set the buffer to 1KB for certain users of my application. I tried... <% if (useSmallBuffer==true) { %><[EMAIL PROTECTED] buffer="1kb"%><% } %> ...but this doesn't work (can't mix directives and scripting elements). Any ideas? Thanks, Richard -Original Message- From: Tim Funk [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 19, 2006 6:53 AM To: Tomcat Users List Subject: Re: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192 JSP's also have a buffer too. To make it smaller or eliminate it: <[EMAIL PROTECTED] buffer='none'%> or use out.flush() instead or response.flushBuffer() -Tim - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
RE: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192
Thanks Tim. out.flush() wasn't doing anything unless there was already 8KB in the buffer. But, the JSP page directive helped: Before setting the JSP page directive, the pre-compiled .java file that Tomcat was creating had... pageContext = _jspxFactory.getPageContext(this, request, response, "ErrorPage.jsp", true, 8192, true); ...and now, with <[EMAIL PROTECTED] buffer="1kb"%>, it uses... pageContext = _jspxFactory.getPageContext(this, request, response, "ErrorPage.jsp", true, 1024, true); It looks like the buffer can only be specified in 1kb increments, but a 1KB keep-alive being sent every 30 seconds is better than an 8KB keep-alive. Is there a way to make the JSP page directive conditional? Basically, I only want to set the buffer to 1KB for certain users of my application. I tried... <% if (useSmallBuffer==true) { %><[EMAIL PROTECTED] buffer="1kb"%><% } %> ...but this doesn't work (can't mix directives and scripting elements). Any ideas? Thanks, Richard -Original Message- From: Tim Funk [mailto:[EMAIL PROTECTED] Sent: Tuesday, December 19, 2006 6:53 AM To: Tomcat Users List Subject: Re: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192 JSP's also have a buffer too. To make it smaller or eliminate it: <[EMAIL PROTECTED] buffer='none'%> or use out.flush() instead or response.flushBuffer() -Tim Richard Mundell wrote: > No one replied, so in the hope someone might have the answer to this, > here's a repost... :-) > > > -Original Message- > From: Richard Mundell [mailto:[EMAIL PROTECTED] > Sent: Friday, December 15, 2006 3:37 PM > To: users@tomcat.apache.org > Subject: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size > < > 8192 > > I'm trying to work around a timeout problem which one of my user's > proxy server has. The proxy's timeout is set to 1 minute. Should it > not receive any HTTP traffic for 1 minute it disconnects. > > One of my JSPs takes >1 minute to perform processing and return results. > > What I'm trying to do is... > > 1) Flush out HTTP headers immediately > 2) (Start my database operation which takes >1 minute) > 3) Write out and flush to the client a HTML comment () > every 10 seconds while the database operation completes to stop the > proxy timing out > 4) (Database operation completes) > 5) Write out results > > By calling response.flushBuffer() immediately at the top of my JSP, > the HTTP headers are being written out to the TCP stream. So far, so good. > > My code then, every 10 seconds, does an out.print("") > and a response.flushBuffer(). > > By using a packet sniffer I can see that although the headers get > output to the TCP stream, the "body" of the HTTP response does not get > written out until the very end of the execution of the JSP. The only > way I can get the buffer to flush is if I do an out.print with a > string greater than 8192 characters (the default size of the buffer). > > Note that I also tried out.flush() and that doesn't work either. > > As a workaround I tried to set the buffer size artificially low, but > this call is being ignored: > > System.out.println(response.getBufferSize()); > // buffer size of 8192 printed to stdout > > response.setBufferSize(100); > // buffer size should now be 100, right? > > System.out.println(response.getBufferSize()); > // buffer size of 8192 still printed to stdout > > setBufferSize only works if I set the buffer > 8192. > > I can't find any reference in the Tomcat spec to this being a > deliberate behavior, or a hard-coded minimum? > > Anyone got any ideas of where I'm going wrong, or how I might get this > to work in Tomcat 5.5.9? (Note that I'm stuck at Tomcat 5.5.9 because > the later > (Apache) HTTPS implementations don't work reliably in our environment). - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192
JSP's also have a buffer too. To make it smaller or eliminate it: <[EMAIL PROTECTED] buffer='none'%> or use out.flush() instead or response.flushBuffer() -Tim Richard Mundell wrote: No one replied, so in the hope someone might have the answer to this, here's a repost... :-) -Original Message- From: Richard Mundell [mailto:[EMAIL PROTECTED] Sent: Friday, December 15, 2006 3:37 PM To: users@tomcat.apache.org Subject: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size < 8192 I'm trying to work around a timeout problem which one of my user's proxy server has. The proxy's timeout is set to 1 minute. Should it not receive any HTTP traffic for 1 minute it disconnects. One of my JSPs takes >1 minute to perform processing and return results. What I'm trying to do is... 1) Flush out HTTP headers immediately 2) (Start my database operation which takes >1 minute) 3) Write out and flush to the client a HTML comment () every 10 seconds while the database operation completes to stop the proxy timing out 4) (Database operation completes) 5) Write out results By calling response.flushBuffer() immediately at the top of my JSP, the HTTP headers are being written out to the TCP stream. So far, so good. My code then, every 10 seconds, does an out.print("") and a response.flushBuffer(). By using a packet sniffer I can see that although the headers get output to the TCP stream, the "body" of the HTTP response does not get written out until the very end of the execution of the JSP. The only way I can get the buffer to flush is if I do an out.print with a string greater than 8192 characters (the default size of the buffer). Note that I also tried out.flush() and that doesn't work either. As a workaround I tried to set the buffer size artificially low, but this call is being ignored: System.out.println(response.getBufferSize()); // buffer size of 8192 printed to stdout response.setBufferSize(100); // buffer size should now be 100, right? System.out.println(response.getBufferSize()); // buffer size of 8192 still printed to stdout setBufferSize only works if I set the buffer > 8192. I can't find any reference in the Tomcat spec to this being a deliberate behavior, or a hard-coded minimum? Anyone got any ideas of where I'm going wrong, or how I might get this to work in Tomcat 5.5.9? (Note that I'm stuck at Tomcat 5.5.9 because the later (Apache) HTTPS implementations don't work reliably in our environment). - To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]