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) -