Hi,
 
There is a problem in 'SessionManager' implementation regarding count of 
expired sessions.
 
In 'org.apache.catalina.session.ManagerBase' class:
 
For each session, method 'ManagerBase.processExpires()' calls 
''org.apache.catalina.session.StandardSession.isValid()' method and increments 
number of expired session (in case that session isn`t valid)
      ............... 
      if (!sessions[i].isValid()) {
                expiredSessions++;
                expireHere++;
            }
       .............
 
But, 'StandardSession.isValid()' method triggers 'StandardSession.expire(true)' 
method in cases when session should be invalidated. This method also increments 
number of expired sessions ('SessionManager' attribute).
 
expire(boolean value)
        .......
                int numExpired = manager.getExpiredSessions();
                numExpired++;
                manager.setExpiredSessions(numExpired);
        ........
 
At the end, as result of session invalidation process, number of expired 
sessions is doubled.
 
Regards,
    Radivoj Milin

Reply via email to