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