java - validate - struts framework pdf
Invalidación de Sturts 2 sesiones con sesión de solicitud de configuración a una nueva sesión (1)
En mi aplicación Struts, una vez que el usuario inicia sesión, necesito invalidar la sesión actual y crear una nueva sesión. Invalido la sesión con
getHttpServletRequest().getSession().invalidate();
Y creo una nueva sesión como
getHttpServletRequest().getSession(true);
El problema aquí es después de lo anterior. Intento acceder a getSession()
le da al estado una excepción no válida; HttpSession
no es válido.
getSession()
devuelve un mapa donde en mi clase de acción implementa SessionAware
que tiene setSession(Map session)
.
EDITAR: A continuación está la excepción
Error creating HttpSession due response is commited to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: HttpSession is invalid
java.lang.IllegalStateException: HttpSession is invalid
Entonces, lo que asumo es que Struts getSession()
sigue haciendo referencia a la sesión que he invalidado.
¿Cómo hacer que Struts getSession()
haga referencia a la nueva sesión que he creado?
Si desea acceder a la sesión de struts después de invalidar la sesión de servlet, debe actualizar o renovar la sesión de struts. Por ejemplo
SessionMap session = (SessionMap) ActionContext.getContext().getSession();
//invalidate
session.invalidate();
//renew servlet session
session.put("renewServletSession", null);
session.remove("renewServletSession");
//populate the struts session
session.entrySet();
ahora la sesión de struts está lista para usar la nueva sesión de servlet y estás listo para reutilizar la sesión de struts.