Java计划只运行一次

时间:2015-03-03 12:43:09

标签: java scheduler

我有一个任务,我想在每个星期天下午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注释是出于历史原因,只是想在发布时保持代码准确

1 个答案:

答案 0 :(得分:0)

尝试将dayOfMonth =“Sun”,month =“”,year =“”,hour =“18”作为参数并验证。