Rev 3975 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/****/package in.shop2020.creation.util;import in.shop2020.util.BDBHotBackupTask;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/*** @author mandeep**/public class BackgroundTaskExecutor implements ServletContextListener {private static Log log = LogFactory.getLog(BackgroundTaskExecutor.class);private ScheduledExecutorService scheduler;@Overridepublic void contextInitialized(ServletContextEvent event) {log.info("Inside contextInitialized");scheduler = Executors.newSingleThreadScheduledExecutor();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:MM:ss");SimpleDateFormat sdfYYYYMMDD = new SimpleDateFormat("yyyyMMdd");long initialDelay = 0;long period = 4 * 60 * 60 * 1000; //in millisecondstry {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.DATE, 1);initialDelay = sdf.parse(sdfYYYYMMDD.format(calendar.getTime()) + " 15:00:00").getTime() - new Date().getTime();initialDelay %= period;} catch (ParseException e) {log.error("Could not compute initial delay", e);}scheduler.scheduleAtFixedRate(new BDBHotBackupTask(), initialDelay, period, TimeUnit.MILLISECONDS);}@Overridepublic void contextDestroyed(ServletContextEvent event) {log.info("Inside contextDestroyed");scheduler.shutdownNow();}}