Reading the servlet spec raised a couple of thoughts about http session
handling to my mind. I did verify them, but did not file bug reports.

Should I write a patch for these?


Thought #1
==

"SRV.7.6 Last Accessed Times
The getLastAccessedTime method of the HttpSession interface allows a servlet
to determine the last time the session was accessed before the current
request. The session is considered to be accessed when a request that is part
of the session is first handled by the servlet container."

Imagine the following situation with four requests in the same session:

Moment 0: Request #0 arrives. The session is initiated.
Moment 1: Request #1 arrives. The request processing performs some long
operation.
Moment 2: Request #2 arrives.
Moment 3: Request #3 arrives.
Moment 4: The long operation of the request #1 processing is complete. Request
#1 processing calls session.getLastAccessedTime(). According to the spec the
method should return the time of moment 0 (request #0 was the previous
request before the request #1). Tomcat returns the time of moment 2 (the time
request #2 arrived) instead.


Thought #2
==

If the session is created by the current request, the
session.getLastAccessedTime() returns the session creation time. Should it
return 0 instead? I'd find it a bit less incorrect.


Thought #3
==

"SRV.7.5 Session Timeouts
The session invalidation will not take effect until all servlets using that
session have exited the service method."

Tomcat does nothing to ensure this.

To reproduce, set session timeout to 3mins and put the following code to
service method:

HttpSession session = request.getSession();
Thread.sleep(200 * 1000L); // a long operation =)
session.getLastAccessedTime();

->IllegalStateException is thrown

--
Jarno Peltoniemi

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to