Hi You can check here:
https://builds.apache.org/view/M-R/view/MyFaces/job/myfaces-current22-1/ As soon as the job (#1164) is done, you can take the jars from that location (which should be the same). regards, Leonardo Uribe 2013/10/17 Howard W. Smith, Jr. <smithh032...@gmail.com> > Okay, that is great. I'm waiting for the following folders to be updated > with the latest version: > > 1. > > https://repository.apache.org/content/repositories/snapshots/org/apache/myfaces/core/myfaces-api/2.2.0-SNAPSHOT/ > > 2. > > https://repository.apache.org/content/repositories/snapshots/org/apache/myfaces/core/myfaces-impl/2.2.0-SNAPSHOT/ > > > > > On Thu, Oct 17, 2013 at 10:47 PM, Leonardo Uribe <lu4...@gmail.com> wrote: > > > Hi > > > > I have found the bug. The problem was caused on a refactor, there was an > > old code that skip state saving when view map is empty, but now since > there > > is a proxy for that implementing StateHolder, the map can be empty but it > > holds the view scope key. Since with CDI the beans are stored internally, > > the map keeps empty but the scope is not, and if the view scope key is > lost > > the bean is recreated every time. But the beans are still in session, and > > with the session timeout bug the final result is @PreDestroy is not > called. > > > > Please try again with the latest code, it should work. And please lets us > > know what happened, if it is working or not. > > > > regards, > > > > Leonardo Uribe > > > > > > > > 2013/10/17 Leonardo Uribe <lu4...@gmail.com> > > > > > Hi > > > > > > I have committed a fix for the problem with the timeout. But I'm > curious > > > about this problem, because I tested this scope and specifically the > > > @PreDestroy stuff. It should work. But maybe there is a bug > somewhere.... > > > > > > regards, > > > > > > Leonardo Uribe > > > > > > > > > 2013/10/17 Howard W. Smith, Jr. <smithh032...@gmail.com> > > > > > >> 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. > > >> > > > > > > > > >