No tx at all? Shouldnt work excepted if eclipselinks doesnt respect the spec Le 7 déc. 2012 07:38, "Howard W. Smith, Jr." <smithh032...@gmail.com> a écrit :
> I decided to add the update user table method to my applicationScopeBean, > since I have a logout() method that I call on applicationScopeBean, which > has the User POJO, and that User POJO is passed to updateUserTable() that > is defined on applicationScopeBean. > > Just tested it and it works as designed (works great)! :) > > Thanks. > > > On Fri, Dec 7, 2012 at 1:28 AM, Romain Manni-Bucau <rmannibu...@gmail.com > >wrote: > > > Hi to update in a db you need a transaction -> ejb > > Le 7 déc. 2012 06:36, "Howard W. Smith, Jr." <smithh032...@gmail.com> a > > écrit : > > > > > That seemed to do the trick. I did the following: > > > > > > Added @PreDestroy to the following (previously-existing) method in my > > user > > > bean, which was called successfully by HttpSessionListener in > > > JSF-managed-bean webapp, when session timed out. > > > > > > @PreDestroy > > > public void sessionTimeout() { > > > > > > and then I just tested by the following in my web.xml > > > > > > <!-- session-timeout = 120 (2 hours) --> > > > <session-config> > > > <session-timeout> > > > 1 > > > </session-timeout> > > > </session-config> > > > > > > > > > I would like to update the database (user table via stateless session > > bean) > > > when session timeout, but that doesn't seem possible in > JSF-managed-bean > > as > > > well as CDI-managed-bean. > > > > > > I think I can create a timer that does it immediately before session > > > timeout, but that may be a bit much or overkill or not the best > solution. > > > :) > > > > > > Anyway, just wanted to followup on this topic. :) > > > > > > > > > On Thu, Dec 6, 2012 at 6:43 PM, Howard W. Smith, Jr. < > > > smithh032...@gmail.com > > > > wrote: > > > > > > > Romain, > > > > > > > > Since my TomEE/CDI-managed-bean web app is in production, as > discussed > > > > earlier, I need this functionality. I never did write the code that I > > > > mentioned below, but I think I may need to try it out and see if it > is > > a > > > > workaround since HttpSessionListener seems not useful in a TomEE (or > > > > OpenWebBeans) CDI-managed-bean app. > > > > > > > > Howard > > > > > > > > > > > > On Sun, Nov 25, 2012 at 2:35 AM, Howard W. Smith, Jr. < > > > > smithh032...@gmail.com> wrote: > > > > > > > >> 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(); > > > >>> > } > > > >>> > } > > > >>> > > > > >>> > } > > > >>> > > > > >>> > > > >> > > > >> > > > > > > > > > >