¿Cuál es la mejor manera de invalidar la sesión dentro de una aplicación JSF 2.0? Sé que JSF en sí no maneja la sesión. Hasta ahora he podido encontrar¿Cómo invalidar la sesión en JSF 2.0?
private void reset() {
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false);
session.invalidate();
}
- ¿Es este método correcta? ¿Hay alguna manera de no tocar el ServletAPI ?
- Considere un escenario en el que un UserBean
@SessionScoped
maneja el inicio de sesión-cierre de sesión de un usuario. Tengo este método en el mismo bean. Ahora, cuando llamo al métodoreset()
después de haber terminado con las actualizaciones necesarias de DB , ¿qué pasará con mi bean con ámbito de sesión actual? desde incluso el propio frijol se almacena enHttpSession
?
@BalusC, ¿cuál es la diferencia entre 'ExternalContext # invalidateSession()' y 'HttpSession # invalidate()'? – Patrick
@Patrick: Funcionalmente, nada. Ambos hacen exactamente lo mismo. 'ExternalContext # invalidateSession()' llama bajo las cubiertas 'HttpSession # invalidate()' (ver también el enlace javadoc en mi respuesta). Diseño-técnicamente, el enfoque 'ExternalContext' es mejor. Básicamente debe esforzarse por tener ** cero ** 'javax.servlet. *' Importaciones en cualquiera de sus artefactos relacionados con JSF. – BalusC