Este tópico responde a perguntas frequentes sobre o gerenciamento de jobs do Spring no SchedulerX.
Por que o timer original do Spring continua em execução após o SchedulerX assumir os jobs agendados do Spring?
Se sua aplicação especificar um agendador personalizado, o SchedulerX o substituirá. Verifique se o projeto da aplicação contém uma classe que implemente a interface org.springframework.scheduling.annotation.SchedulingConfigurer e se o método setScheduler de ScheduledTaskRegistrar sobrescreve o agendador padrão. Caso essa classe exista ou o agendador padrão seja substituído, comente o código relacionado.
Como obtenho o contexto de um job do Spring?
Adicione o seguinte código ao projeto da aplicação para obter o contexto:
JobContext jobContext = ContainerFactory.getContainerPool().getContext();
Um job do Spring retorna resultado de processamento?
Jobs do Spring retornam resultados de processamento se a versão do agente for superior a 1.10.11. O retorno ocorre conforme os métodos de agendamento especificados.
@Scheduled(cron = "0/5 * * * * ?")
public ProcessResult helloStandalone1() {
try {
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. start");
TimeUnit.SECONDS.sleep(2L);
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. end");
} catch (Exception e) {
e.printStackTrace();
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. exception end..");
}
return new ProcessResult(true, "Processing result");
}
@Scheduled(cron = "0/5 * * * * ?")
public String helloStandalone2() {
try {
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. start");
TimeUnit.SECONDS.sleep(2L);
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. end");
} catch (Exception e) {
e.printStackTrace();
logger.info(DateUtil.now() + " " + Thread.currentThread().getName() + " hello world. exception end..");
}
return "Processing result";
}