Ayuda con sesiones

geobasis
07 de Junio del 2005
Hola, por favor alguien sabe que metodo del objeto session debo invocar para saber cuando una session ha terminado por que el usuario ha estado inactivo y ha superado el session timeout, como cuando yahoo o hotmail dicen su session ha expirado vuelva a login ya que en algunos casos me aparece.

404 Not Found
OracleJSP: java.io.FileNotFoundException:
Defina el par谩metro de inicializaci贸n debug_mode en "true" para consultar el mensaje de excepci贸n completo.

y en otros como que el usuario no ha iniciado sesion.

frantic
07 de Junio del 2005
Hola,

Te comento lo siguiente que quiz谩s pueda ayudarte, la session es un objeto manipulable desde c贸digo Java en varios aspectos, puedes asignarle un timeOut, puedes activarla o desactivarla e incluso puedes verificar si es nueva o no.
Por ejemplo para crearle session a un usuario quiz谩s te interese hacerle login antes, luego de que el usuario coloque los datos podr铆as comprobar que estos sean correctos contra base de datos y en caso afirmativo simplemente crearle una nueva session asignandole par谩metros como el timeOut del siguiente modo:

HttpSession session = request.getSession(true); //Creamos la nueva session

session.setMaxInactiveInterval(900); //Estara inactivo 15 minutos maximo (900 segundos)

Otra cosa util que podrias hacer al crear la session es enviarle un Objeto donde tengas datos que utilizar铆as siempre en la session, como por ejemplo los datos del usuario que luego podrias recuperas desde cualquier jsp o servlet que est茅 en la aplicaci贸n mediante el m茅todo session.getAttribute(String).

Luego podr铆as comprobar si el usuario ya hizo login de una manera muy sencilla con el siguiente c贸digo:
HttpSession session = request.getSession();

if(session.isNew()){
//El codigo en caso de que la session sea nueva
}

Si la session es nueva significa que un jsp la acaba de crear, ya que todos los jsp por defecto crean una session en caso de no haber una activa. En este caso existen solo dos posibilidades, que el usuario no haya hecho login, motivo por el cual no tiene creada la session o que el tiempo establecido en el timeOut haya expirado con lo cual para seguir teniendo acceso ya debe hacer login nuevamente, es decir que dentro del If anterior podrias hacerle un redirect a una p谩gina de error donde le indiques al usuario que su session expiro y que debe hacer login nuevamente.
Tambi茅n puedes hacer logOut a un usuario y eliminar manualmente su session como lo hace el servidor de hotmail o yahoo cuando le dices cerrar sesion, la instruccion para ello ser铆a:
session.invalidate();

Con eso invalidas la session, en todos los jsp麓s y servlets a los que no deseas que un usuario no logeado entre podrias incluir el c贸digo de verificaci贸n de session.

Espero que esto te sirva de gu铆a para resolver tu problema.
Saludos.-

cualquiera
07 de Junio del 2005
Yahoo y HotMail probablemente guarde la fecha y hora en que te conectas como una cooky, y cada 24hs te pide que te vuelvas a loguear. Dificilmente te interese usar esa pol铆tica para mantener la sesi贸n en tu aplicaci贸n, si la sesi贸n expir贸 por timeout ya no va a "existir" la sesi贸n y la situaci贸n ser铆a igual a que el usuario nunca se hubiera logueado.

Alex
07 de Junio del 2005
Si mencionaras que servidor estas utilizando pues creo q seria de mucha ayuda para comprender, yo se que al usar tomcat, servlets, en el archivo web.xml puedes definir el tiempo de sesion, si gustas puedes investigar por alli de lo contrario seria mejor si fueras mas explicito con el problema.