package com.fp.general.security.rules; import javax.persistence.EntityManager; import javax.persistence.Query; import com.fp.common.exception.ExceptionHandler; import com.fp.common.logger.APPLogger; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.commondb.helper.FormatDates; /** * Clase que cierra todas las conexiones abiertas en el servidor * @author scastillo */ public class CloseAllSessions { /** * Almacena una instancia de CloseAllSessions. */ private static CloseAllSessions cache; /** * Entrega una instancia de CloseAllSessions. * @return DataHelper */ public static CloseAllSessions getInstance() { if (cache != null) { return cache; } synchronized (CloseAllSessions.class) { if (cache == null) { cache = new CloseAllSessions(); } } return cache; } /** * Sentencia SQL que caduca las sesiones */ private static final String SQL = "update TsafeUserSession set pk.dateto = :dateto where pk.dateto = :datetofilter and webserverip = :webserverip"; /** * Metodo que cierra las sesiones abiertas en el servidor * @param host * @throws Exception */ public void expireSessions(String host) throws Exception { EntityManager em = PersistenceHelper.getEntityManager(); try { Query query = em.createQuery(SQL); query.setParameter("dateto", FormatDates.getInstance().getDataBaseTimestamp(em)); query.setParameter("datetofilter", FormatDates.getDefaultExpiryTimestamp()); query.setParameter("webserverip", host); query.executeUpdate(); } catch (Exception e) { ExceptionHandler eh = new ExceptionHandler(e, "es"); APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); APPLogger.getLogger().error("Tech Message:==>\n" + eh.getTechnicalMessage()); APPLogger.getLogger().error("Stack Message:==>\n" + eh.getStackTrace()); } } }