Index: lams_central/web/WEB-INF/web.xml =================================================================== diff -u -rbf7188dd95898df53f786a38b116214d005c8fb2 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4 --- lams_central/web/WEB-INF/web.xml (.../web.xml) (revision bf7188dd95898df53f786a38b116214d005c8fb2) +++ lams_central/web/WEB-INF/web.xml (.../web.xml) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4) @@ -645,6 +645,7 @@ /css/* /errorpages/* + /error.jsp /images/* /includes/javascript/* /includes/font-awesome/* Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java =================================================================== diff -u -r68d929f2345407cf503c29c3903fb0127dd3f848 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4 --- lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision 68d929f2345407cf503c29c3903fb0127dd3f848) +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SessionManager.java (.../SessionManager.java) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4) @@ -90,23 +90,12 @@ HttpSession existingSession = loginMapping.get(login); // check if it's a different session and if so, which one is newer if (existingSession != null && !existingSession.getId().equals(sessionId)) { - if (session.getCreationTime() > existingSession.getCreationTime()) { - try { - // invalidate the other session - existingSession.invalidate(); - } catch (Exception e) { - log.warn("SessionMananger invalidation exception", e); - // if it was already invalidated, do nothing - } - } else { - try { - // invalidate this session - session.invalidate(); - } catch (Exception e) { - log.warn("SessionMananger invalidation exception", e); - // if it was already invalidated, do nothing - } - throw new SecurityException("You were logged out"); + try { + // invalidate the other session + existingSession.invalidate(); + } catch (Exception e) { + log.warn("SessionMananger invalidation exception", e); + // if it was already invalidated, do nothing } } loginMapping.put(login, session); Index: lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java =================================================================== diff -u -r7475d08afc280b5e2e5ddf04e8bf35e3166aaf80 -rf4d538fe4dbd4575c45b6fc3f203ea0bde22efa4 --- lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision 7475d08afc280b5e2e5ddf04e8bf35e3166aaf80) +++ lams_common/src/java/org/lamsfoundation/lams/web/session/SystemSessionFilter.java (.../SystemSessionFilter.java) (revision f4d538fe4dbd4575c45b6fc3f203ea0bde22efa4) @@ -41,6 +41,9 @@ * @author Steve.Ni */ public class SystemSessionFilter implements Filter { + + private static final String CONTEXT_ERROR_PAGE = "/error.jsp"; + @Override public void init(FilterConfig config) throws ServletException { } @@ -54,7 +57,15 @@ return; } - SessionManager.startSession((HttpServletRequest) request); + HttpServletRequest httpRequest = (HttpServletRequest) request; + String requestURI = httpRequest.getRequestURI(); + if (requestURI.endsWith(CONTEXT_ERROR_PAGE)) { + // do not create a session for displaying error page + chain.doFilter(request, response); + return; + } + + SessionManager.startSession(httpRequest); // do following part of chain chain.doFilter(request, response); SessionManager.endSession();