--- android/TrainInfoService/src/dk/thoerup/traininfoservice/StatisticsListener.java 2010/06/09 20:16:01 811 +++ android/TrainInfoService/src/dk/thoerup/traininfoservice/StatisticsListener.java 2011/04/19 17:17:09 1316 @@ -2,21 +2,37 @@ import java.util.Timer; import java.util.TimerTask; +import java.util.logging.Logger; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; +import javax.servlet.annotation.WebListener; - +@WebListener public class StatisticsListener implements ServletContextListener { + + Logger log = Logger.getLogger(StatisticsListener.class.getName()); Timer timer = null; int update_interval; public void contextInitialized(ServletContextEvent sce) { - update_interval = getUpdateInterval( sce.getServletContext() ); + TraininfoSettings settings = SettingsListener.loadSettings(sce.getServletContext()); + + update_interval = settings.getStatsInterval(); + + if (! sce.getServletContext().getRealPath("/").startsWith("/home/app/") ) { + //if path not starts with /home/app then it is not running on a production server and we only collects stats on prod servers + log.info("This is not a prod. server, dont start Statistics saver"); + return; + } + + + if ( update_interval > 0 ) { + log.info("Statistics saver started with update_interval=" + update_interval); timer = new Timer(); TimerTask statsUpdate = new TimerTask() { @@ -27,23 +43,18 @@ }; timer.schedule(statsUpdate, 0, update_interval); + } else { + log.info("Statistics saver disabled (update_interval == 0) "); } } public void contextDestroyed(ServletContextEvent sce) { - if ( update_interval > 0 ) { + log.info("StatisticsListener::contextDestroyed"); + if ( timer != null ) { timer.cancel(); + Statistics.getInstance().saveStats(); } } - private int getUpdateInterval(ServletContext cntx) { - int interval = 0; - try { - String intervalStr = cntx.getInitParameter("stats_interval"); - interval = Integer.parseInt(intervalStr); - } catch (Exception e) {} - - return interval; - } }