¿Cuándo crea JSF una sesión y qué pone en un mapa de sesión?

Estoy ejecutando Mojarra 2.2.0.

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

El método de acción de bean gestionado es:

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

porstateless puntos de vistasession.getId() tirosNPE

Para las vistas que no son apátridas: disparando una solicitud GET, hayJSESSIONID=340041C96D5AA446D761C3602F54A76D

lo leíaquí ese-

Para el mecanismo de ahorro de estado del lado del cliente, JSF no creará la sesión y almacenará el estado de vista en un campo de entrada oculto con el nombre javax.faces.ViewState en el formulario siempre que sea necesario.

Además, se menciona aquíese

JSF creará automáticamente la sesión porque el estado de vista JSF debe almacenarse allí. Si configura el método de ahorro de estado JSF en el cliente en lugar del servidor, entonces no se almacenará en la sesión y, por lo tanto, no es necesario crear una sesión

Creo que la línea anterior es una fuente de problemas para mí.

Si establece el método de ahorro de estado JSF en el cliente en lugar del servidor, entonces no se almacenará en la sesión // TOTALMENTE ACEPTADO

y

por lo tanto, no es necesario crear una sesión. // Esto confunde porque para el mecanismo de guardado del lado del cliente, el contenedor de servlets genera una identificación de sesión y, por lo tanto, hay una sesión asociada con la solicitud.

En referencia a la discusión que tuve con BalusC en estepregunta, Creé un HttpSessionListener-

@WebListener
public class MyHttpSessionListener implements HttpSessionListener {

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

    public void sessionDestroyed(HttpSessionEvent event) {

    }

}

Vea las capturas de pantalla adjuntas a continuación (estas 2 capturas de pantalla son para la versión 2.0.3, debe haber habido un error antiguo debido a que la sesión se estaba creando) -

Libraby (Mojarra 2.2.0) -

Respuestas a la pregunta(1)

Su respuesta a la pregunta