3 Replies Latest reply on Feb 26, 2013 8:49 PM by Hector Mendoza

    Session Time out in Seam

    radouane el marjani Newbie


      I try to develop a expired time out in Seam, but I sill have a problem with this.
      I have done these Steps:

      1.Step: I have a class that implement PhaseListner and I write these Methodes there:
      - beforePhase to control if the session is expired, if yes I araise an event whith the name org.jboss.seam.sessionExpired.
      - With observer annotation to this event, the methode sessionExpiredEventListner is called and throw an exception new ViewExpiredException()

      public void beforePhase(PhaseEvent pEvent) {
               if(null != pEvent) {
                     if(pEvent.getPhaseId() == PhaseId.RESTORE_VIEW)
                HttpServletRequest request =(HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
                   if(request != null){
                        //if(isSessionExpired && Identity.instance().isLoggedIn()) {
                        if(request.getRequestedSessionId() != null && request.getSession().isNew()){
                      if(request.getRequestedSessionId() == null && request.getSession().isNew()){
                    } else {log.info("-------8------>: Request is NULL");}
               }else {
                    log.info("------------->PhaseEvent is NULL");
      public void sessionExpiredEventListener(){     
          FacesMessages.instance().add("User session expired");
         throw new ViewExpiredException();

      -Because of throw the exception ViewExpiredException, I define in pages.xml this Exception to go to the page: login.xhtml to logging new:

      <exception class="javax.faces.application.ViewExpiredException">
        <redirect view-id="/login.xhtml">
          <message>Your session has timed out, please try again</message>

      - Step 3:
      -to set the time out for session in web.xml in 1 minute:


      After writing this code and testing, I never get the time out session and my development works normally.
      Just after conversation time out I go to home.xhtml: From components.xml (I know that the time out of session must be greater then conversation time out, but here just to testing)

      <core:manager concurrent-request-timeout="180000" conversation-timeout="180000" conversation-id-parameter="cid" parent-conversation-id-parameter="pid"/>

      Can some one tell me, what I did wrong. I see on the forum, there is some discussions about this but I can't get any step forward...