tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leon Rosenberg <>
Subject Re: [OT - question] Limit user sessions in tomcat
Date Wed, 16 Dec 2009 00:27:32 GMT
On Tue, Dec 15, 2009 at 11:01 PM, Caldarale, Charles R
<> wrote:
>> From: André Warnier []
>> Subject: Re: [OT - question] Limit user sessions in tomcat
>> It would seem that there ought to be some low-level response-direction
>> socket flag that should be available, to tell whether the receiving end
>> has gone, without actually having to send anything from a higher-level
>> code module.  But getting to that low-level socket data does not seem
>> to be so easy in Java, is it ?
> It's not hard in Java (Socket.getRemoteSocketAddress() or Socket.isConnected() should
work), but there's nothing in the servlet spec that allows a servlet thread to obtain for
that information.  Ideally, the container (Tomcat) would asynchronously monitor the socket
status and set some flag in the Request object for the webapp code to examine at its leisure.
 Might also be able to implement this with a new form of listener.
> I haven't looked at the Servlet 3 spec to see if anything is in there for this rather
common problem.

Hmm, last time I implemented a tcp/ip stack (which is more than 10
years ago) there were no possibility in the tcp protocol to detect a
broken (not closed) connection except via so_timeout which should be
large enough for a webapp to reply. As far as I know,
socket.isConnected will never return false, once connected, even if
you close the Socket on your side, isConnected will still return true.

As for the OPs question (and i apologize if the answer was already
given) the common approach to prevent f5-hitting users on long-running
requests is to start a background thread which processes the request
(or, more modern, use a Future and the Executor facilities) and return
the current request back to the user with a waiting page, which
refreshes itself in short periods checking whether the background task
is yet finished and redirecting to the result page when done.


To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message