package login; import java.util.Hashtable; import java.util.Enumeration; class SessionCache implements Runnable { private Hashtable sessionCache; private long flush; private Thread reaper; SessionCache (long flush) { this.flush=flush; sessionCache=new Hashtable (100); reaper=new Thread (this); reaper.setPriority (Thread.MIN_PRIORITY); reaper.start(); } public void run() { while (true) { try { Thread.sleep (flush); Enumeration sessions; Session s; long expire; expire=System.currentTimeMillis(); sessions=sessionCache.elements(); while ( sessions.hasMoreElements() ) { s=(Session)sessions.nextElement(); if ( expire >= s.getExpires()) { sessionCache.remove (s.key()); } } } catch (Exception e) { return; } } } Session put (Session s) { return (Session)sessionCache.put (s.key(), s); } Session get (String key) { return (Session)sessionCache.get (key); } Enumeration elements () { return sessionCache.elements(); } Enumeration keys () { return sessionCache.keys(); } void remove (Session s) { sessionCache.remove (s.key()); } }