o Added a thread to cleanup the expired sessions
o Used ConcurrentHshMap instead of SynchronizedMap
o Added a lock to be sure we don't have concurrent access to the map
(it's needed even if the map is protected against concurrent access, as
we update the map in different places)

This filter is an example of what should *not* be accepted in out code
base...