public void sessionDestroyed(HttpSessionEvent event) { if (!isStateless) { HttpSession session = event.getSession(); ScopedContainers scopedContainers = getScopedContainers(session.getServletContext()); MutablePicoContainer sessionCtr = scopedContainers.getSessionContainer(); SessionStoreHolder ssh = (SessionStoreHolder) session.getAttribute(SessionStoreHolder.class.getName()); scopedContainers.getSessionStoring().putCacheForThread(ssh.getStoreWrapper()); scopedContainers.getSessionState().putLifecycleStateModelForThread(ssh.getLifecycleState()); stop(sessionCtr); dispose(sessionCtr); scopedContainers.getSessionStoring().invalidateCacheForThread(); scopedContainers.getSessionState().invalidateStateModelForThread(); session.setAttribute(SessionStoreHolder.class.getName(), null); } }
public void sessionCreated(HttpSessionEvent event) { if (!isStateless) { HttpSession session = event.getSession(); ScopedContainers scopedContainers = getScopedContainers(session.getServletContext()); SessionStoreHolder ssh = new SessionStoreHolder(scopedContainers.getSessionStoring().resetCacheForThread(), scopedContainers.getSessionState().resetStateModelForThread()); start(scopedContainers.getSessionContainer()); session.setAttribute(SessionStoreHolder.class.getName(), ssh); } }
scopedContainers.getSessionState().putLifecycleStateModelForThread(ssh.getLifecycleState()); scopedContainers.getRequestState().resetStateModelForThread(); scopedContainers.getRequestState().invalidateStateModelForThread(); scopedContainers.getSessionState().invalidateStateModelForThread();
protected ScopedContainers makeScopedContainers(boolean stateless) { //NullLifecycleStrategy ls = new NullLifecycleStrategy(); DefaultPicoContainer appCtnr = new DefaultPicoContainer(new Guarding().wrap(new Caching()), makeLifecycleStrategy(), makeParentContainer(), makeAppComponentMonitor()); Storing sessStoring = new Storing(); DefaultPicoContainer sessCtnr = new DefaultPicoContainer(new Guarding().wrap(sessStoring), makeLifecycleStrategy(), appCtnr, makeSessionComponentMonitor()); Storing reqStoring = new Storing(); DefaultPicoContainer reqCtnr = new DefaultPicoContainer(new Guarding().wrap(addRequestBehaviors(reqStoring)), makeLifecycleStrategy(), sessCtnr, makeRequestComponentMonitor()); ThreadLocalLifecycleState sessionState = new ThreadLocalLifecycleState(); ThreadLocalLifecycleState requestState = new ThreadLocalLifecycleState(); sessCtnr.setLifecycleState(sessionState); reqCtnr.setLifecycleState(requestState); return new ScopedContainers(appCtnr, sessCtnr, reqCtnr, sessStoring, reqStoring, sessionState, requestState); }
parentOfRequestContainer = appCtnr; } else { sessionState = new ThreadLocalLifecycleState(); sessStoring = new Storing(); sessCtnr = new DefaultPicoContainer(new Guarding().wrap(sessStoring), makeLifecycleStrategy(), appCtnr, makeSessionComponentMonitor()); ThreadLocalLifecycleState requestState = new ThreadLocalLifecycleState(); reqCtnr.setLifecycleState(requestState); return new ScopedContainers(appCtnr, sessCtnr, reqCtnr, sessStoring, reqStoring, sessionState, requestState);