Quando o JSF cria uma sessão e o que ele coloca em um mapa de sessão?

Estou executando o Mojarra 2.2.0.

  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>

O método de ação do bean gerenciado é

public void action() {
        HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
                .getExternalContext().getSession(false);
        System.out.println(session.getId()); // not null for stateful views
    }

Parastateless Visualizaçõessession.getId() jogaNPE

Para visualizações que não são sem estado - acionando uma solicitação GET, háJSESSIONID=340041C96D5AA446D761C3602F54A76D

eu leioaqui este-

Para o mecanismo de economia de estado do lado do cliente, o JSF não criará a sessão e armazenará o estado de visualização em um campo de entrada oculto com o nome javax.faces.ViewState no formulário sempre que necessário.

Além disso, é mencionado aquieste

O JSF realmente criará automaticamente a sessão porque o estado de exibição do JSF deve ser armazenado ali. Se você definir o método de economia de estado JSF como cliente em vez de servidor, ele não será armazenado na sessão e, portanto, nenhuma sessão precisará ser criada

Eu acho que a linha acima é uma fonte de problemas para mim.

Se você definir o método de economia de estado JSF como cliente em vez de servidor, ele não será armazenado na sessão // ACORDO INTEIRO

e

portanto, nenhuma sessão precisa ser criada. // Isso é confuso porque, para o mecanismo de salvamento do lado do cliente, um ID de sessão é gerado pelo contêiner do servlet e, portanto, há uma sessão associada à solicitação.

Em referência à discussão que tive com o BalusC nestePergunta, questão, Criei um HttpSessionListener-

@WebListener
public class MyHttpSessionListener implements HttpSessionListener {

    public void sessionCreated(HttpSessionEvent event) {
        Thread.dumpStack();
    }

    public void sessionDestroyed(HttpSessionEvent event) {

    }

}

Veja abaixo as capturas de tela anexadas (essas duas capturas de tela são para a versão 2.0.3, deve ter havido um bug antigo devido ao qual a sessão estava sendo criada) -

Libraby (Mojarra 2.2.0) -

questionAnswers(1)

yourAnswerToTheQuestion