java之构建自己的session
package com.ideai.service; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.UUID; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import org.springframework.stereotype.Service; import com.ideai.service.BaseService; @Service public class SessionManagerService extends BaseService { private int expired = 3600;// 秒 private int checkInterval = 1800;// 秒 private Timer timer = null; public int getExpired() { return expired; } static class DeleteJob extends java.util.TimerTask { Map<String, Map<String, Object>> sessions; Map<String, Date> sessionExpired; public DeleteJob(Map<String, Map<String, Object>> sessions, Map<String, Date> sessionExpired) { this.sessionExpired = sessionExpired; this.sessions = sessions; } @Override public void run() { Date now = new Date(); for (String key : sessionExpired.keySet()) { if (now.after(sessionExpired.get(key))) { sessions.remove(key); sessionExpired.remove(key); } } } } @PostConstruct public void init() { // 删除过期的session DeleteJob job = new DeleteJob(sessions, sessionExpired); timer = new Timer(true); timer.schedule(job, 0, checkInterval); } @PreDestroy public void uninit() { if (timer != null) { try { timer.cancel(); } catch (Exception e) { // TODO: handle exception } } } // 设置session过期时间 public void setExpired(int expired) { this.expired = expired; } public final Map<String, Map<String, Object>> sessions = Collections .synchronizedMap(new HashMap<String, Map<String, Object>>()); public final Map<String, Date> sessionExpired = Collections.synchronizedMap(new HashMap<String, Date>()); // 保存session public synchronized void setSession(String key, Map<String, Object> session) { this.sessions.put(key, session); Date now = new Date(); this.sessionExpired.put(key, new Date(now.getTime() + expired * 1000)); } // 删除session public void removeSession(String key) { this.sessions.remove(key); } // 获取session public Map<String, Object> getSession(String key) { return this.sessions.get(key); } // 生成sessionid public String genId() { return UUID.randomUUID().toString(); } }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: Javascript之删除数组a在数组b中的元素