Olá, criei uma schedule do quartz e funciona quando executada no main. porém ao iniciar com o vRaptor não funciona…
SchedulerFactory
@Component
@ApplicationScoped
public class SchedulerFactoryCreator implements ComponentFactory<Scheduler> {
private SchedulerFactory factory;
@PostConstruct
public void create() {
factory = new StdSchedulerFactory();
}
public Scheduler getInstance() {
try {
return factory.getScheduler();
} catch (SchedulerException e) {
e.printStackTrace();
return null;
}
}
@PreDestroy
public void destroy() {
factory = null;
}
}
ApplicationTaskManager
@Component
@ApplicationScoped
public class ApplicationTaskManager {
private Scheduler scheduler;
private final Logger logger = Logger
.getLogger(ApplicationTaskManager.class);
public ApplicationTaskManager(Scheduler scheduler) {
this.scheduler = scheduler;
}
@PostConstruct
public void create() {
logger.info("Criando tasks...");
JobDetail job = new JobDetail("contratos_vencendo", "contratos",
NotificacaoDeVencimentoDeContratos.class);
Trigger tempo = TriggerUtils.makeMinutelyTrigger(2);
tempo.setName("daily");
logger.info("Tasks criadas...");
try {
scheduler.scheduleJob(job, tempo);
scheduler.start();
} catch (SchedulerException e) {
logger.error("Erro ao iniciar schedule", e);
}
}
@PreDestroy
public void destroy() {
try {
scheduler.shutdown();
} catch (SchedulerException e) {
logger.error("Erro ao parar schedule", e);
}
}
Task
public class NotificacaoDeVencimentoDeContratos implements ApplicationTask {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
try {
Email email = new EmailImpl();
email.setFrom("********@****.com");
email.setTo("brunoadacosta@gmail.com");
email.setBody("CORPO");
email.setSubject("ALOOUU");
email.send();
} catch (Exception e) {
e.printStackTrace();
}
}
}