Modificar time-out de sesión

12/Nov/2006 Java , , 14 Comentarios

Cuando un usuario realiza una conexión contra una aplicación web se le crea una sesión. La sesión es la identidad que tiene dicho usuario en el servidor hasta que se desconecta.

En la sesión de un usuario se podrá almacenar información que queramos que previva mientras el usuario permanezca conectado a nuestra web.

Y esta última frase es el kit de la cuestión. ¿Cúando sabemos que un usuario se ha desconectado? Pues es difícil, ya que el protocolo HTTP es sin estado y las peticiones vienen y van sin un control. Es por ello que la única forma de saber que un usuario se ha ido es indicando un tiempo de caducidad de la sesión, más conocido como timeout de sesión.

Dependiendo del contenedor de servlets que estemos utilizando, este establecerá el timeout de sesión en un valor u otro atendiendo a unos parámetos de configuración.

Por ejemplo, Tomcat utiliza el fichero /conf/web.xml para configurarla, como podemos ver en estas líneas de código:

<!-- ==== Default Session Configuration ==== -->
<!-- You can set the default session timeout (in minutes) for all newly   -->
<!-- created sessions by modifying the value below.                       -->
<session-config>
<session-timeout>30</session-timeout>
</session-config>

Como vemos, establece 30 minutos como tiempo máximo de inactividad.

Pero cuando creemos una aplicación podemos indicar un tiempo de timeout sobre esta aplicación. Y es que quien no nos dice que nuestra aplicación pueda correr sobre varios contenedores de servlets.

Para configurar el timeout de la sesión de nuestra aplicación deberemos de configurar el descriptor de despliegue de la misma (/WEB-INF/web.xml). Para ello utilizremos la etiqueta < session-config> y anidada a ella <session-timeout>. Vamos, que son las mismas etiquetas que utiliza Tomcat.

Así, el código nos quedaría de la siguiente forma:

<session-config>
<session-timeout>10</session-timeout>
</session-config>

En este caso establecemos el tiempo de timeout a 10 minutos.

14 comentarios en “Modificar time-out de sesión”

Víctor Cuervo

Daniel Ramirez

modificar el descriptor de despliegue, pero si no está creado el archivo web.xml ya que trabajas con anotaciones, cual sería el procedimiento desde la configuración, sin usar metodos en el servlet. gracias

Víctor Cuervo

Víctor Cuervo

Puedes hacerlo programáticamente.

HttpSession session = request.getSession();
session.setMaxInactiveInterval(20*60);

Saludos.

Víctor Cuervo

cesar

Muchas gracias llevaba varias semanas buscando

Víctor Cuervo

Víctor Cuervo

Cesar nos alegra que lo hayas encontrado y te hayamos ayudado.

Saludos.

Víctor Cuervo

jose

Tengo un problema con weblogic y sesiones, tengo varias app publicadas cada una con su dominio y en el momento que un mismo usuario ejecuta mas de una aplicacion, la nueva me finaliza la sesion de la anterior, alguien sabe como resolverlo?

Víctor Cuervo

Juan

bien explicado

Víctor Cuervo

Joel

Gracias! simple y preciso!

Víctor Cuervo

vuelos low cost

Gracias, muy util el post.

Víctor Cuervo

Txomin Gutierrez

tengo una consulta sobre eso exactamente, en mi aplicacion la session se vence al X tiempo y lo manda a la pagina de logeo again cuando trata algo despues de vencida la session, al momento de entrar no se pq trata de llegar a lo ultimo que estaba haciendo la persona cosa qeu si era alguna consulta o algo que requeria datos dara un error. Existe alguna solucion para este problema?

Víctor Cuervo

ME-MO-RY

que buen post gracias es bueno saber ese tipo de cosas que en algun momento pueden servir mucho

Víctor Cuervo

Alvin Human

Por error puse así:

21600000

Pero al parecer mantenia el valor de timout por defecto he ignoraba lo que puse.

Por favor confirmarme eso.

Víctor Cuervo

1

chupa el perro, como haces para ver el tema del acceso concurrente

Víctor Cuervo

anonymo

hola yo quiero saber si solo hay que decirle en el web.xml el tiempo de sesion (time-out) y listo cuando pase el tiempo que uno le define, la aplicacion se sale sola o hay que ponerle algun codigo en el servlet y para que tome el valor que esta en el web.xml y si es asi como se podria hacer eso.

muchas gracias por la inf. =D

Víctor Cuervo

Carlos Ramirez

Gracias por la info, es clara y va al grano, a seguir dandole…

saludos

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*