package com.idega.event; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.logging.Level; import java.util.logging.Logger; import org.springframework.beans.factory.annotation.Autowired; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWBundleStartable; import com.idega.util.EventTimer; import com.idega.util.expression.ELUtil; public class IWSessionsDaemon implements IWBundleStartable, ActionListener { private static final Logger LOGGER = Logger.getLogger(IWSessionsDaemon.class.getName()); static final String IW_SESSIONS_DAEMON = "IW_SESSIONS_DAEMON"; @Autowired private IWHttpSessionsManager sessionsManager; private EventTimer timer; public void start(IWBundle starterBundle) { timer = new EventTimer(EventTimer.THREAD_SLEEP_2_MINUTES, IW_SESSIONS_DAEMON); timer.addActionListener(this); timer.start(90000); } public void stop(IWBundle starterBundle) { if (timer != null) { timer.stop(); timer = null; } } public void actionPerformed(ActionEvent event) { try { if (event.getActionCommand().equals(IW_SESSIONS_DAEMON)) getSessionsManager().removeUselessSessions(); } catch(Exception e) { LOGGER.log(Level.WARNING, "Error cleaning useless sessions", e); } } private IWHttpSessionsManager getSessionsManager() { if (sessionsManager == null) { ELUtil.getInstance().autowire(this); } return sessionsManager; } }