commit
bdebc2004c
@ -0,0 +1,58 @@ |
||||
package com.gitee.sop.adminserver.common; |
||||
|
||||
import com.gitee.easyopen.exception.ApiException; |
||||
import com.gitee.easyopen.session.ApiSessionManager; |
||||
import com.google.common.cache.LoadingCache; |
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
import javax.servlet.ServletContext; |
||||
import javax.servlet.http.HttpSession; |
||||
|
||||
/** |
||||
* @author tanghc |
||||
*/ |
||||
@Slf4j |
||||
public class MyApiSessionManager extends ApiSessionManager { |
||||
|
||||
private volatile LoadingCache<String, HttpSession> cache; |
||||
|
||||
@Override |
||||
public HttpSession getSession(String sessionId) { |
||||
if (sessionId == null) { |
||||
return this.createSession(sessionId); |
||||
} |
||||
try { |
||||
return getCache().get(sessionId); |
||||
} catch (Exception e) { |
||||
log.error(e.getMessage(), e); |
||||
throw new ApiException("create session error"); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 创建一个session |
||||
* |
||||
* @param sessionId 传null将返回一个新session |
||||
* @return 返回session |
||||
*/ |
||||
@Override |
||||
protected HttpSession createSession(String sessionId) { |
||||
ServletContext servletContext = getServletContext(); |
||||
HttpSession session = this.newSession(sessionId, servletContext); |
||||
session.setMaxInactiveInterval(getSessionTimeout()); |
||||
getCache().put(session.getId(), session); |
||||
return session; |
||||
} |
||||
|
||||
public LoadingCache<String, HttpSession> getCache() { |
||||
if (cache == null) { |
||||
synchronized (ApiSessionManager.class) { |
||||
if (cache == null) { |
||||
cache = buildCache(); |
||||
} |
||||
} |
||||
} |
||||
return cache; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue