我有一个任务,我想在每个星期天下午6点运行,并且我为此目的使用了javax.ejb.Schedule。我把时间表设置为;
@Schedule(dayOfWeek = "Sun", hour="18", persistent = false)
出于某种原因,这只运行一次然后悄然停止。如果我将其注释为以下内容,它会继续运行并且每分钟运行一次;
@Schedule(hour="*", minute="*", persistent = false)
我知道如果抛出一个异常,计时器就会被清除,但是当我每分钟运行一次时它运行正常。此外,第一个星期天它运行良好,然后我看到第二个星期天没有它的痕迹;没有例外或记录或任何东西。 有什么想法吗?更多代码;
@Schedules(value = {
@Schedule(dayOfWeek = "Sun", hour="18", persistent = false)
})
public void runTask() {
logger.info("Running task");
File file = new File("file.csv");
List<String[]> data = getData();
try {
populateCsv(file, data);
} catch (IOException e) {
logger.error("Error creating csv file", e);
}
}
private void populateCsv(File file, List<String[]> data) throws IOException {
CSVWriter csvWriter = null;
try {
FileWriter fileWriter = new FileWriter(file);
csvWriter = new CSVWriter(fileWriter, ',', CSVWriter.NO_QUOTE_CHARACTER);
csvWriter.writeAll(data);
} finally {
if (csvWriter != null) {
csvWriter.close();
}
}
}
@Schedules注释是出于历史原因,只是想在发布时保持代码准确
答案 0 :(得分:0)
尝试将dayOfMonth =“Sun”,month =“”,year =“”,hour =“18”作为参数并验证。