Session TimeOut en JSF2 con el soporte de Primefaces.

En este tutorial vamos a ver como controlar la perdida de sesión del lado del cliente con el soporte de un componente de Primefaces.

Session TimeOut en JSF2 con el soporte de Primefaces.

0. Índice de contenidos.


1. Introducción

Ya hemos visto en adictos como llevar a cabo el control de timeout de la sesión con otras librerías de componentes visuales JSF:

Ahora es el turno de Primefaces,
en el entorno de JSF2.

En este tutorial vamos a ver como controlar la perdida de sesión del lado del cliente con el soporte de un componente de Primefaces,
para informar de la misma de una manera visualmente atractiva.


2. Entorno.

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro 17′ (2.93 GHz Intel Core 2 Duo, 4GB DDR3 SDRAM).
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.7
  • JSF 2.
  • PrimeFaces 2.2.1
  • Eclipse 3.6: Helios, con m2eclipse.
  • Maven 3.0.3.
  • Apache Tomcat 7.0.6 con la jdk 1.6.


3. Implementanto la solución con Primefaces.

Nuestro objetivo es informar al cliente que se ha perdido la sesión con el servidor y para ello vamos a hacer uso de un componente que básicamente es
un monitor de inactividad del cliente.

Cuando el cliente permanezca inactivo un periodo de tiempo predeterminado mostraremos una ventana modal con una redirección a la página de login.

Lo que haremos es hacer coincidir la configuración de este monitor en el cliente con la configuración de la sesión establecida en el descriptor de
despliegue de la aplicación web, con ello el tiempo de timeout estará establecido en un único lugar.

Vamos a crear una plantilla, sessionTimeOut.xhtml, que podremos incluir en cualquiera de nuestros layouts con el siguiente código:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.prime.com.tr/ui"
	xmlns:f="http://java.sun.com/jsf/core">
	<ui:composition>
			<p:idleMonitor onactive="sessionTimeOutDialog.show();" timeout="#{session.maxInactiveInterval * 1000}" />
			<p:dialog header="#{msg['error.sessionTimeOut.header']}" widgetVar="sessionTimeOutDialog" 
			 modal="true" fixedCenter="true" closable="false" width="400" visible="false">
			     <h:outputText value="#{msg['error.sessionTimeOut.text']}" />
			     <input id="confirmBackToLogin" type="button" value="#{msg['error.sessionTimeOut.button']}"
			        onclick="window.location='#{facesContext.externalContext.requestContextPath}/login.xhtml';" />
			</p:dialog>
	
	</ui:composition>
</html>

El componente p:idleMonitor está configuración con el session timeout establecido en la aplicación y, al transcurrir dicho tiempo mostrará una ventana modal, con el evento onactive.

El atributo widgetVar de Primefaces sirve para darle un nombre al componente en el ámbito del cliente y poder invocar a funciones javascript de su api, por ejemplo, mostrarlo u ocultarlo.

El resultado, transcurrido el tiempo definido, será similar al siguiente:


4. Referencias.


5. Conclusiones.

Simple, pero necesario.

Este tutorial surge a petición de un alumno de uno de nuestros cursos de JSF2. Como sabéis en Autentia
nos dedicamos al desarrollo, consultoría, coaching y formación y, en esta última faceta siempre estamos dispuestos a echar una mano a quien confía en
nosotros para la impartición de los cursos sobre las tecnologías con las que trabajamos habitualmente.

Un saludo.

Jose

jmsanchez@autentia.com

Comentarios

5 respuestas

  1. Mis felicitaciones por el tutorial, gracias a Uds. me estoy metiendo en el tema de Primefaces. Ya que estamos te quería pedir si pueden hacer un tutorial sobre Spring Security 3 con Dao y Primefaces. Creo que sería un muy buen complemento de este mismo tutorial.Un Abrazo

  2. Hola que tal estoy trabajando en una aplicación muy parecida a MercadoLibre es un trabajo de la Universidad, me gustaria saber si me podrias ayudar con lo siguiente, como hago un Upload con Primefaces. Estoy trabajando con Eclipse Helios 3.6, con Maven 3.0 como servidor web uso Tomcat 7.0v

  3. Buenas,

    Muchas gracias por los comentarios.

    Iremos atendiendo todas estas peeticiones de tutoriales poco a poco.

    Stay tuned!

    Un saludo.

    Jose.

  4. Estimado, gracias por el tutorial, pero al parecer tiene un problema ya que cuando se mueve el mouse se resetea el contador de p:idleMonitor, esto sería grave ya que en el servidor la sesión podría expirar mientras en el cliente la cuenta regresiva se resetearía cada vez que se mueva el mouse (el servidor no tiene idea si el usuario movió el mouse).
    Esto se lo comento porque hice la prueba y efectivamente, la cuenta empezaba cada vez que movía el mouse.
    Saludos cordiales.

  5. Hola, encuentro excelente la pagina, tengo una duda, es donde debo implementar el código
    soy nuevo en primefaces y no conozco mucho del tema :/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

He leído y acepto la política de privacidad

Información básica acerca de la protección de datos

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Software Architect 👷‍♀️ | Tech Leader 🚀 | Senior Developer: Backend 🧩 and occasionally in Frontend 🖼️ | DevSecOps 🛠️ | Banking 🏛️ | Digital Transformation Agent 🎯 | Problem Solver (Mr. Wolf) 🐺

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

02/03/2026

José Antonio Sánchez Segovia

Zephyr es un RTOS open source respaldado por la Linux Foundation que permite desarrollar dispositivos embebidos conectados, eficientes y escalables, facilitando el paso de prototipo a producto final con una arquitectura mantenible.

23/02/2026

Enrique Casado Díez

LoRa y LoRaWAN son tecnologías clave en el ecosistema IoT cuando se requiere largo alcance y bajo consumo energético. En este artículo analizamos su funcionamiento, Spreading Factor, link budget, arquitectura de red, frecuencias y clases de dispositivos, con un caso práctico real.

19/02/2026

Juan José Díaz Antuña

Copilot Chat es la forma más sencilla y segura de empezar a usar IA en Microsoft 365. En este artículo vemos cómo funciona, cómo activarlo y en qué se diferencia de Microsoft 365 Copilot, Copilot Studio y los Agentes Inteligentes, con ejemplos prácticos y una comparativa clara.