Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
1.2.0
-
None
Description
Some servlet containers do not automatically initialized the lastAccessedTime for new sessions they create. They wait until the next request occurs. For example in jetty this servlet will print out "0" the first time you access it:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{ response.getWriter().println(request.getSession(true).getLastAccessedTime()); }and then subsequent access print out the current time as you would expect.
Pluto's PortletRequestImpl#getPortletSession() method does not work correctly for these servlet containers because it assumes that the session's lastAccessTime has been initialized. When that time has not been initialized it proceeds to invalidate the session since it thinks the session has exceeded the maxInactiveInterval.
Another problem in this method is that when an httpSession has been invalidated it is still used by the cached portletSession.