繁体   English   中英

Java计划只运行一次

[英]Java schedule runs only once

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM