ArenMg/src/main/java/fr/lirmm/aren/servlet/BackgroundJobManager.java

57 lines
1.8 KiB
Java

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