package org.eh.core.task; import java.util.Date; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.TimerTask; import java.util.concurrent.ConcurrentMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eh.core.common.Constants; import org.eh.core.http.ApplicationContext; import org.eh.core.http.HttpSession; /** * 定时清理过期session * @author guojing * @date 2014-3-17 */ public class SessionCleanTask extends TimerTask { private final Log log = LogFactory.getLog(SessionCleanTask.class); @Override public void run() { log.info("清理session......"); ConcurrentMap<String, HttpSession> sessionMap = ApplicationContext.getApplicationContext() .getAllSession(); Iterator<Map.Entry<String, HttpSession>> it = sessionMap.entrySet().iterator(); while (it.hasNext()) { ConcurrentMap.Entry<String, HttpSession> entry= (Entry<String, HttpSession>) it.next(); HttpSession httpSession= entry.getValue(); Date nowDate = new Date(); int diff = (int) ((nowDate.getTime() - httpSession.getLastVisitTime().getTime())/1000/60); if (diff > Integer.parseInt(Constants.OTHER_CONFIG_INFO.get(Constants.SESSION_TIMEOUT))) { it.remove(); } } log.info("清理session结束"); } }