Para entender un poco mejor todo este tema, veo que Servlet, es decir el Tomcat, resuelve las sesiones de la misma manera que lo hacen el resto de las aplicaciones que manejan servicios de usuarios implementados dentro de los servidores de Apache. Tal es el caso de Xampp, Wampp, etc; que cuando corre un servicio o petición del HTML y otros lengajes que soporta el host anfitrión, ahí dentro ya se crean estos objetos de sesiones. Lo explico de manera simple para que se entienda, como me explicaron a mí: "Cada sesión que se inicia, se crea ese objeto y en realidad es en forma de un array, esto hace que en cada elemento de ese array se pueda acceder a la info que necesita tanto el navegador, desde el lado del usuario, como el servidor, justamente del lado del servidor".
Esto hace que, al conocer estas propiedades, podemos hacer uso de ellas, por ejemplo: asignar un nombre de usuario, el tiempo de vida de esa sesión, y datos adicionales...
Explico esto, porque si se entiende la importancia de acceder a estos recursos, podemos utilizarlos, por ejemplo para saber qué visitó o qué cambios hizo cada usuario dentro del sistema, e incluso cuántas sesiones tiene abiertas con ese usuario, el tiempo de vida, cookies, etc. En PHP, recuerdo que lo trabajábamos con $Session, esta variable global te permite acceder a toda esta info. Creo que JAVA lo trabaja igual. por tal motivo; les recomiendo a todos, que vean cómo lo resuelve JAVA, ya que la plataforma siempre es Apache, por lo general, y de esta manera saber bien qué atributos y propiedades invocar en cada caso. Por ejemplo al final, aquí usamos un sesion.invalidate(). Y yo recuerdo que en PHP, usamos al principio, sesionstart(); y al final sesion_destroy(); además del resto, que como dije anteriormente, en caso de una página muy visitado, tener un cronómetro de sesión abierta y destruirla pasado un tiempo.
Justo de lo que hablo:
<sesión-config>
<session-timeout>10</session-timeout>
</session-config>
No tienen idea de lo importante que es esto para la "salud del sistema"y del servidor mismo!!
En fin, el tema es muy amplio, a mi criterio muy interesante; ya que el manejo de usuarios y sesiones, por lo general; requieren de un sistema casi completo y de manera que corra de forma paralela al desarrollo de la app principal.