Re: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size 8192

2006-12-19 Thread Tim Funk

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 (!--hello--) 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(!-- hello --) 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]



RE: On Tomcat 5.5.9, can't flush the buffer or reduce buffer size 8192

2006-12-19 Thread Richard Mundell

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 (!--hello--) 
 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(!-- hello --) 
 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

2006-12-19 Thread Tim Funk
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]



On Tomcat 5.5.9, can't flush the buffer or reduce buffer size 8192

2006-12-18 Thread Richard Mundell
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 (!--hello--) 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(!-- hello --) 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).
 
Thanks,
 
Richard



-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



On Tomcat 5.5.9, can't flush the buffer or reduce buffer size 8192

2006-12-15 Thread Richard Mundell
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 (!--hello--) 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(!-- hello --) 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).
 
Thanks,
 
Richard



-
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]