una sitios paso pagina lenguaje hacer directorio dinámicos dinamicos dinamicas dinamica desde desarrollo desarrollar componentes como cero aplicaciones aplicacion java session servlets timeout

java - sitios - lenguaje pagina web dinamica



¿Cómo establecer el tiempo de espera de la sesión de forma dinámica en las aplicaciones web de Java? (3)

Necesito darle a mi usuario una interfaz web para cambiar el intervalo de tiempo de espera de la sesión. Por lo tanto, las diferentes instalaciones de la aplicación web podrían tener diferentes tiempos de espera para sus sesiones, pero su web.xml no puede ser diferente.

¿Hay alguna manera de establecer el tiempo de espera de la sesión programáticamente, para poder usar, por ejemplo, ServletContextListener.contextInitialized() para leer el intervalo configurado y configurarlo al inicio de la aplicación?

Muchas gracias.


¿Hay alguna manera de establecer el tiempo de espera de la sesión programáticamente

Básicamente hay tres formas de establecer el valor de tiempo de espera de la sesión:

Pero tenga en cuenta que la opción posterior establece el valor de tiempo de espera para la sesión actual , esta no es una configuración global.


Como se le contó a otros redactores, puede cambiar en un Listener de sesión. Pero puede cambiarlo directamente en su servlet, por ejemplo.

getRequest().getSession().setMaxInactiveInterval(123);


En lugar de usar un ServletContextListener, use un HttpSessionListener . En el método sessionCreated() , puede establecer el tiempo de espera de la sesión programáticamente.

public class MyHttpSessionListener implements HttpSessionListener{ public void sessionCreated(HttpSessionEvent event){ event.getSession().setMaxInactiveInterval(15*60); //in seconds } public void sessionDestroyed(HttpSessionEvent event){} }

Y no olvide definir el oyente en el descriptor de despliegue:

<webapp> ... <listeners> <listener-class>com.example.MyHttpSessionListener</listener-class> </listeners> </webapp>

Aún así, recomendaría crear diferentes archivos web.xml para cada aplicación y definir el tiempo de espera de la sesión allí:

<webapp> ... <session-config> <session-timeout>15</session-timeout> <!-- in minutes --> </session-config> </webapp>