Interesting...well, now I know. I just added a @Stateful (first time), so the persistance across server shutdown/restart baffled me. :)
On Sun, Nov 25, 2012 at 2:49 AM, Howard W. Smith, Jr. < smithh032...@gmail.com> wrote: > Interesting. Glassfish always trigger my UserBean.sessionTimeout() via > HttpSessionListener.sessionDestroyed, when I undeploy app or shutdown > server. Maybe this type of behavior/feature is > container-specific.whether/not sessions are persisted at shutdown? > > Hmmm, user A opens session, server shuts down while user A logged in... I > guess this is beneficial for when server comes back up, user A can resume > his work. Right? > > If so, my brother asked me if my web app could 'persist' session if he > loses (internet) connection to the server. I guess my app does not persist > and resume 'persisted' sessions, or maybe I didn't know how to turn on that > feature when I was develop app for Glassfish. > > > Is there a JVM or tomcat/tomee container option for > > > On Sun, Nov 25, 2012 at 2:41 AM, Romain Manni-Bucau <rmannibu...@gmail.com > > wrote: > >> Hmm, >> >> Sessions are persisted so you cant destroy a session from a session events >> excepted the timeout which will do it automatically >> Le 25 nov. 2012 08:36, "Howard W. Smith, Jr." <smithh032...@gmail.com> a >> écrit : >> >> > Interesting. So, when server shutdown, sessions are not destroyed? >> > >> > If the answer is yes, I guess you are telling me that I should invoke >> > session.invalidate() in a @PreDestroy of my CDI @SessionScoped UserBean? >> > >> > I have a sessionTimeout method on my UserBean already, it is usually >> called >> > by HttpSessionListener on sessionDestroyed. >> > >> > >> > On Sun, Nov 25, 2012 at 2:27 AM, Romain Manni-Bucau >> > <rmannibu...@gmail.com>wrote: >> > >> > > Because the session is not destroyed, you need to destroy it or wait >> the >> > > session timeout >> > > Le 25 nov. 2012 07:21, "Howard W. Smith, Jr." <smithh032...@gmail.com> >> a >> > > écrit : >> > > >> > > > I have the following defined for my HttpSessionListener, and I don't >> > see >> > > it >> > > > being executed (or showing up in server log) when I undeploy or >> > shutdown >> > > > TomEE. >> > > > >> > > > /* >> > > > * To change this template, choose Tools | Templates >> > > > * and open the template in the editor. >> > > > */ >> > > > package pf; >> > > > >> > > > import java.util.Date; >> > > > >> > > > import javax.inject.Inject; >> > > > >> > > > import javax.servlet.annotation.WebListener; >> > > > import javax.servlet.http.HttpSessionEvent; >> > > > import javax.servlet.http.HttpSessionListener; >> > > > >> > > > import jsf.users.pf_UsersController; >> > > > >> > > > /** >> > > > * >> > > > * @author Administrator >> > > > */ >> > > > @WebListener >> > > > public class UserHttpSessionListener implements HttpSessionListener >> { >> > > > >> > > > @Inject >> > > > private pf_UsersController userBean; >> > > > >> > > > @Override >> > > > public void sessionCreated(HttpSessionEvent event) { >> > > > // Do here the job. >> > > > } >> > > > >> > > > @Override >> > > > public void sessionDestroyed(HttpSessionEvent event) { >> > > > /* >> > > > * JSF Managed Beans >> > > > * >> > > > pf_UsersController userBean = (pf_UsersController) >> > > > event.getSession(). >> > > > >> > getAttribute("pf_usersController"); >> > > > */ >> > > > if (userBean != null && userBean.getUser() != null) { >> > > > String userName = userBean.getUser().getUserName(); >> > > > >> > > System.out.println("UserHttpSessionListener.sessionDestroyed(): >> > > > " + >> > > > userName + " session destroyed"); >> > > > userBean.sessionTimeout(); >> > > > } >> > > > } >> > > > >> > > > } >> > > > >> > > >> > >> > >