Foros del Web » Programación para mayores de 30 ;) » Programación General »

Servlets y sesiones

Estas en el tema de Servlets y sesiones en el foro de Programación General en Foros del Web. Tengo un servlet que asigna una sesión a un usuario mediante HttpSession sesion = req.getSession (true), y a continuación le asigno unos atributos a la ...
  #1 (permalink)  
Antiguo 02/09/2002, 14:52
 
Fecha de Ingreso: mayo-2002
Mensajes: 37
Antigüedad: 22 años, 6 meses
Puntos: 0
Servlets y sesiones

Tengo un servlet que asigna una sesión a un usuario mediante HttpSession sesion = req.getSession (true), y a continuación le asigno unos atributos a la sesión para ese usuario. El problema surge cuando un usuario cierra su navegador. Si intenta invocar de nuevo al servlet, su sesión se interpreta como invalidada y se le asigna una nueva sesión. Pero en caso de que no se conecte, yo no tengo notificación de que dicha sesión ha finalizado. A lo mejor no me he explicado demasiado bien, pero en resumen, lo que estoy intentando averiguar es si hay alguna forma de saber todas las sesiones que hay activas y las que han dejado de estarlo.
Muchas gracias. ;)
  #2 (permalink)  
Antiguo 02/09/2002, 16:57
 
Fecha de Ingreso: junio-2002
Mensajes: 39
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Servlets y sesiones


Una sesion es una conexion continuada de un mismo navegador a un servidor web durante un tiempo, por esa razon cuando cierras el navegador pierde la sesion, y los datos asociados. La sesion se mantiene durante un cierto tiempo, despues del cual se cierra la sesion, puedes controlarlo con el método setMaxInactiveInterval().

La pregunta a la que te refieres, la unica solucion que veo es almacenando los datos en la cookie, el problema puede surguir si el usuario no admite cookies.

No respondo a la pregunta, pero espero haberte aclarado un poco la duda que tenias.
  #3 (permalink)  
Antiguo 03/09/2002, 13:13
 
Fecha de Ingreso: mayo-2002
Mensajes: 37
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Servlets y sesiones

Gracias Logic. Efectivamente no respondes a mi pregunta, pero agradezco tu atención.
Voy a seguir dándole vueltas a ver si encuentro alguna forma donde pueda hacerme con las sesiones expiradas. En cuanto a fijar el máximo intervalo de una sesión ya lo he hecho, pero eso no soluciona nada. Muchas gracias. Si encuentro algo, te informo.
;)
  #4 (permalink)  
Antiguo 03/09/2002, 14:24
 
Fecha de Ingreso: junio-2002
Mensajes: 39
Antigüedad: 22 años, 5 meses
Puntos: 0
Re: Servlets y sesiones

De nada, aqui estamos para ayudarnos los unos a los otros en lo que podamos. ;)

Volviendo a leer tu pregunta se me ocurre una solucion, pero mediante una tabla de una base de datos y cuando entre un usuario(inicie la sesion) creas un registro con la hora, y si ya ha iniciado la sesion modificas el registro con la hora actual.

¿Como sabes cuantos hay? facil, borras los que hayan pasado el tiempo minimo y los que te quedan son los que estan conectados!!!!

Parece facil, pero....programarlo...

Mucha suerte!!!
  #5 (permalink)  
Antiguo 03/09/2002, 15:49
Avatar de Zokor  
Fecha de Ingreso: julio-2002
Mensajes: 167
Antigüedad: 22 años, 4 meses
Puntos: 1
Re: Servlets y sesiones

El interfaz HttpSessionListener te permite ser notificado cuando una sesión es creada o destruida. Más información en la API (<a href='ir.asp?http://java.sun.com/products/servlet/2.3/javadoc/javax/servlet/http/HttpSessionListener.html' target='_blank'>http://java.sun.com/products/servlet/2.3...</a>) y supongo que en la especificación tambien hablará del tema.

También te puede ser útil el interfaz ServletContextListener, que tiene un par de metodos que te permiten ser notificado cuando tu aplicacion se crea y se destruye.

Creandote una clase que implemente ambos interfaces puedes llevar correctamente el control de las sesiones de los usuarios. Un ejemplo: puedes crearte un contador e inicializarlo a cero al crearse la aplicacion, e incrementarlo o decrementarlo cuando se cree o destruya una sesion respectivamente.

Si tienes mas dudas exponlas e intentaremos ayudar.

Saludos!

<div align="center"><img src="http://www.alu.ua.es/d/dcmc/img/A1202.gif" width="75" height="78">
  #6 (permalink)  
Antiguo 04/09/2002, 17:03
 
Fecha de Ingreso: mayo-2002
Mensajes: 37
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Servlets y sesiones

Hola a todos:
Logic, había pensado lo de la base de datos, porque de hecho guardo la información del identificador de sesión en ella junto al IdUsuario. Así que pensé guardar la fecha cada vez que un usuario refrescase su sesión, pero eso me obligaría cada cierto tiempo a comprobar cuál de &quot;todas&quot; las sesiones almacenadas han superado el tiempo estimado de duración, para eliminarlas. Creo que eso supone una carga para la BD. Pero no descarto implementar algo así. De todas formas intentaré echarle un vistazo a lo que comenta Zokor, aunque creo que soy un poco novato para manejarme en la maraña de las interfaces. Yo lo intento y os informo de como voy.
Muchas gracias.
;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:09.