responses inline below,
On Thu, Oct 17, 2013 at 9:32 PM, Leonardo Uribe <lu4...@gmail.com> wrote: > > public void onSessionDestroyed() > { > // In CDI case, the best way to deal with this is use a method > // with @PreDestroy annotation on a session scope bean > // ( ViewScopeBeanHolder.destroyBeans() ). There is no need > // to do anything else in this location, but it is advised > // in CDI the beans are destroyed at the end of the request, > // not when invalidateSession() is called. > FacesContext facesContext = FacesContext.getCurrentInstance(); > if (facesContext != null) > { > > I suppose what's going on there is in the context the session invalidation > is done, FacesContext is null and @PreDestroy is ignored. > I can agree with that. > > To be clear two questions: > > 1. Is manual session expiration working ? I suppose yes. > hmmm does manual session expiration == HttpSession.invalidate()? When user click Logout button, my app execute/triggers HttpSession.invalidate(), and @PreDestroy (on CDI @ViewScoped bean) is not executed. > 2. Is session invalidation by a timeout working ? I suppose no. > correct, I just verified that in my app. see below. - navigated to page that reference CDI @ViewScoped bean, @PostConstruct (below) executed Oct 17, 2013 9:45:18 PM jsf.orders.OrderDocumentBean init INFO: jsf.orders.OrderDocumentBean@a9faef9 changed web.xml, session timeout = 1 minute, so tomee ended session via/after timeout, and @PreDestroy on CDI @SessionScoped (below) executed, Oct 17, 2013 9:45:53 PM jsf.users.pf_UsersController sessionTimeout INFO: administrator session ended at 10/17/2013 09:45 PM but @PreDestroy on CDI @ViewScoped bean was not executed I will try to provide an example to test.