2012-05-29 26 views
5

Me gustaría saber cuándo esperar un "nulo" al llamar al HttpServletRequest.getSession(false)HttpServletRequest.getSession (falso): ¿Cuándo devuelve nulo?

También: ¿Hay buenos tutoriales en HttpSession? Me gustaría obtener detalles como: cuándo invalidar()? ¿Cuáles son las consecuencias? ¿Debo verificar si la HttpSession devuelta es válida? ... < == Responda eso en un comentario por favor.

+0

Hice exactamente eso para un sitio mío cuando me di cuenta de que había ciertos motores de búsqueda que no respetaban mi robots.txt. En resumen, llama a getSession (boolean) con false como parámetro. Esto devuelve la sesión si hay una, o nula, si no hay ninguna. A continuación, llama a .getAttributeNames() en la sesión, que en una sesión invalidada (tiempo de espera agotado, cerrado) arroja una IllegalStateException. – 0xCAFEBABE

Respuesta

4

Prácticamente nunca debe esperar un valor nulo. Como dice la documentación, si no hay una sesión activa para una solicitud (por lo general, se verificaría en la cadena de filtros de una solicitud), se creará una sesión. Si obtienes un valor nulo de esto, apostaría a que hay un problema en el sistema operativo subyacente: no me vendría a la mente memoria suficiente para engendrar una sesión.

+0

Aquí está el ejemplo que me llevó a hacer esta pregunta: http://stackoverflow.com/questions/3080203/how-could-randomly-my-session-is-null. Me pregunto si hay más casos como este. ¿Están de acuerdo otros que tener un filtro de verificación para una sesión es una buena idea? – AndrewBourgeois

+0

Como dijo el cartel, intentó getSession (verdadero), que de acuerdo con mi experiencia y la documentación creará la sesión, si no existe. Si no se crea, apostaría que esto es un problema con recursos finitos o algún otro problema (como sugirió un afiche, tal vez una tecnología antiphishing), pero no estoy familiarizado con ninguno en el servidor de aplicaciones mencionado (gato). – 0xCAFEBABE

+0

bien, entonces bajo circunstancias normales (su aplicación se está ejecutando con suficientes recursos, ...), no debería obtener nulo. Lo suficientemente bueno (lo dejaré abierto durante un día para que otros puedan comentar si es necesario). – AndrewBourgeois

Cuestiones relacionadas