maia_modificado/.svn/pristine/d9/d925f8e9e076c769ede245e9213...

64 lines
2.1 KiB
Plaintext
Executable File

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());
}
}
}