/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package fr.lirmm.aren.servlet; import fr.lirmm.aren.service.CommentService; import fr.lirmm.aren.service.vm.VMSendNotificationService; import java.util.Calendar; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; /** * * @author florent */ @WebListener public class BackgroundJobManager implements ServletContextListener { @Inject private CommentService commentService; private ScheduledExecutorService scheduler; @Override public void contextInitialized(ServletContextEvent event) { Calendar c = Calendar.getInstance(); c.add(Calendar.DAY_OF_MONTH, 1); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); long untilMidnight = (c.getTimeInMillis() - System.currentTimeMillis()); long millisInDay = 24 * 60 * 60 * 1000; this.scheduler = Executors.newSingleThreadScheduledExecutor(); this.scheduler.scheduleAtFixedRate(() -> { this.commentService.updateAllTags(); }, untilMidnight, millisInDay, TimeUnit.MILLISECONDS); VMSendNotificationService sendNotificationService=new VMSendNotificationService() ; sendNotificationService.start(); } @Override public void contextDestroyed(ServletContextEvent event) { this.scheduler.shutdownNow(); } }