sesiones - ¿Dónde se almacenan los atributos de HttpSession de Java?
session jsp (2)
¿Los objetos se serializan y se envían al usuario y se devuelven a cada conexión (almacenados en cookies)?
¿O están almacenados en el montón del servidor y la cookie es solo un identificador muy pequeño?
Cualquier información sobre este tema sería útil.
Gracias
Lo tienes en la segunda conjetura.
La cookie contiene un JSESSIONID. Esa identificación se usa para buscar la HttpSession del usuario en un mapa que el servidor mantiene. Al menos esta es la forma más común. Hay una forma más compleja de que el servidor pueda implementar esto, pero no es una de ellas transferir todo el estado en una cookie.
Esto tiene algunas implicaciones. Primero, si el servidor se cae, se pierde el estado de la sesión. En segundo lugar, si tiene un clúster de servidores, debe conectar al usuario al mismo servidor cada vez, o perderá su sesión entre solicitudes posteriores. Por último, el secuestro de la sesión se convierte en una posibilidad si alguien encuentra una manera de copiar el JSESSIONID de otra persona y reemplazarlo por el suyo.
La cookie solo contiene un identificador de sesión (típicamente llamado JSESSIONID
). El servidor asigna este identificador a los datos almacenados actualmente en la sesión del usuario.
Los datos en sí pueden almacenarse en la memoria, o pueden ser serializados en una base de datos o en un archivo, según el servidor que esté utilizando y su configuración.