package org.elevenframework.web.internal; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.elevenframework.web.GlobalService; import org.springframework.stereotype.Service; @Service("globalServiceBean") public class GlobalServiceImpl implements GlobalService { public static final String SESSION_KEY = "session"; private static InheritableThreadLocal<ThreadVariables> THREAD_VARIABLES = new InheritableThreadLocal<ThreadVariables>() { @Override protected ThreadVariables initialValue() { return new ThreadVariables(); } }; public static void setUpHttpSession(HttpServletRequest request) { THREAD_VARIABLES.get().put(SESSION_KEY, request.getSession()); } public static void destroy() { THREAD_VARIABLES.remove(); } @Override public void set(String key, Object object) { if (key.equals(SESSION_KEY)) { throw new IllegalArgumentException("the key of global service should not be session"); } THREAD_VARIABLES.get().put(key, object); } @Override public Object get(String key) { return THREAD_VARIABLES.get().get(key); } @Override public HttpSession getSession() { return (HttpSession) THREAD_VARIABLES.get().get(SESSION_KEY); } }