4.6. Apagar una Aplicación
Un usuario puede cerrar la sesión o cerrar la página web o el navegador, por lo que una sesión y la instancia application asociada pueden terminarse. La finalización de una aplicación puede ser iniciada por la lógica de la aplicación. De lo contrario, será terminada automáticamente cuando la sesión del Servlet expire.
4.6.1 Cerrar una Aplicación
Si el usuario sale de la aplicación a través de la interfaz de usuario, un controlador de eventos debería llamar al método
En el siguiente ejemplo, tenemos un botón Salir, que termina la sesión del usuario.
Notará que el cierre de la aplicación, simplemente recarga la aplicación con una nueva instancia de
4.6.2 Controlar el Cierre de una Ventana
El cierre de la ventana principal (o todas las ventanas de nivel de aplicación) no cierra la sesión y la instancia de la aplicación quedará colgando. Necesitará programar tal comportamiento controlando los eventos de cierre de las ventanas.
Si el usuario cierra una ventana del navegador, como la ventana principal o cualquier otra ventana de nivel de aplicación, la ventana enviará una petición final AJAX al servidor, el cual disparará un
Tenga en cuenta que actualizar una ventana significa cerrarla y volverla a abrir. Por lo tanto, si tiene un controlador de cierre como el anterior, el usuario pierde la posibilidad de actualizar la ventana del navegador.
En el probable caso de que el navegador se bloquee, ningún evento de cierre es comunicado al servidor. Como el servidor no tiene manera de conocer acerca del problema, y la sesión quedará colgando hasta que expire el tiempo de espera de la sesión. Durante este tiempo, el usuario puede reiniciar el navegador, abrir el URL de la aplicación, y la ventana principal le mostrará donde el usuario le dejó. Esto puede ser un comportamiento deseado en muchos casos, pero a veces no lo es y puede crear un problema de seguridad.
Un usuario puede cerrar la sesión o cerrar la página web o el navegador, por lo que una sesión y la instancia application asociada pueden terminarse. La finalización de una aplicación puede ser iniciada por la lógica de la aplicación. De lo contrario, será terminada automáticamente cuando la sesión del Servlet expire.
4.6.1 Cerrar una Aplicación
Si el usuario sale de la aplicación a través de la interfaz de usuario, un controlador de eventos debería llamar al método
close()
en la clase Application
para cerrar la sesión.En el siguiente ejemplo, tenemos un botón Salir, que termina la sesión del usuario.
Button botonCerrar = new Button("Salir"); botonCerrar.addListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { getMainWindow().getApplication().close(); } }); principal.addComponent(botonCerrar);
Notará que el cierre de la aplicación, simplemente recarga la aplicación con una nueva instancia de
Application
. Puede configurar la ventana para redirigir a una dirección URL diferente (que no recarga la aplicación) con setLogoutURL
. En su clase application, escriba:setLogoutURL("/salir.html");
4.6.2 Controlar el Cierre de una Ventana
El cierre de la ventana principal (o todas las ventanas de nivel de aplicación) no cierra la sesión y la instancia de la aplicación quedará colgando. Necesitará programar tal comportamiento controlando los eventos de cierre de las ventanas.
Si el usuario cierra una ventana del navegador, como la ventana principal o cualquier otra ventana de nivel de aplicación, la ventana enviará una petición final AJAX al servidor, el cual disparará un
Window.CloseEvent
para la ventana cerrada. Puede controlar el evento con un Window.CloseListener
. En caso de que el usuario cierre el navegador, el evento es disparado para cada ventana abierta.// Cerrar la aplicación si la ventana principal es cerrada. principal.addListener(new Window.CloseListener(){ @Override public void windowClose(CloseEvent e) { System.out.println("Cerrando la aplicación"); getMainWindow().getApplication().close(); } });
Tenga en cuenta que actualizar una ventana significa cerrarla y volverla a abrir. Por lo tanto, si tiene un controlador de cierre como el anterior, el usuario pierde la posibilidad de actualizar la ventana del navegador.
En el probable caso de que el navegador se bloquee, ningún evento de cierre es comunicado al servidor. Como el servidor no tiene manera de conocer acerca del problema, y la sesión quedará colgando hasta que expire el tiempo de espera de la sesión. Durante este tiempo, el usuario puede reiniciar el navegador, abrir el URL de la aplicación, y la ventana principal le mostrará donde el usuario le dejó. Esto puede ser un comportamiento deseado en muchos casos, pero a veces no lo es y puede crear un problema de seguridad.
Anterior 4.5. Referenciar Recursos |
Siguiente 4.7. Controlar Errores |
No hay comentarios.:
Publicar un comentario