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); } }
public void contextInitialized(final ServletContextEvent event) { ServletContext context = event.getServletContext(); isStateless = Boolean.parseBoolean(context.getInitParameter(STATELESS_WEBAPP)); ScopedContainers scopedContainers = makeScopedContainers(isStateless); scopedContainers.getApplicationContainer().setName("application"); if (!isStateless) { scopedContainers.getSessionContainer().setName("session"); } scopedContainers.getRequestContainer().setName("request"); compose(loadComposer(context), context, scopedContainers); start(scopedContainers.getApplicationContainer()); context.setAttribute(ScopedContainers.class.getName(), scopedContainers); }
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); } }
protected void compose(WebappComposer composer, ServletContext context, ScopedContainers scopedContainers) { composer.composeApplication(scopedContainers.getApplicationContainer(), context); if (!isStateless) { composer.composeSession(scopedContainers.getSessionContainer()); } composer.composeRequest(scopedContainers.getRequestContainer()); }
public void init(FilterConfig filterConfig) throws ServletException { ServletContext context = filterConfig.getServletContext(); ScopedContainers scopedContainers = getScopedContainers(context); setAppContainer(scopedContainers.getApplicationContainer()); isStateless = Boolean.parseBoolean(context.getInitParameter(PicoServletContainerListener.STATELESS_WEBAPP)); printSessionSize = Boolean.parseBoolean(context.getInitParameter(PicoServletContainerListener.PRINT_SESSION_SIZE)); String exposeServletInfrastructureString = filterConfig.getInitParameter("exposeServletInfrastructure"); if (exposeServletInfrastructureString == null || Boolean.parseBoolean(exposeServletInfrastructureString)) { exposeServletInfrastructure = true; } scopedContainers.getRequestContainer().as(Characteristics.NO_CACHE).addAdapter(new HttpSessionInjector()); scopedContainers.getRequestContainer().as(Characteristics.NO_CACHE).addAdapter(new HttpServletRequestInjector()); scopedContainers.getRequestContainer().as(Characteristics.NO_CACHE).addAdapter(new HttpServletResponseInjector()); initAdditionalScopedComponents(scopedContainers.getSessionContainer(), scopedContainers.getRequestContainer()); }
if (scopedContainers.getSessionContainer().getComponentAdapters().size() > 0) { throw new PicoContainerWebException("Session not setup correctly. There are components registered " + "at the session level, but no working container to host them"); setSessionContainer(scopedContainers.getSessionContainer()); containersSetupForRequest(scopedContainers.getApplicationContainer(), scopedContainers.getSessionContainer(), scopedContainers.getRequestContainer(), req, resp);