Мне нужно, чтобы работа выполнялась один раз в день в течение недели, начиная с 01:00 утра.
Приложение упаковано в банку.
Работая в Windows как java -jar в приложении, она работает нормально, начиная работу в момент, указанный в CronTrigger.
При запуске на linux-сервере приложение, похоже, запускается каждую секунду.
Зависимость кварца Maven
<dependency>
<groupId>quartz</groupId>
<artifactId>quartz</artifactId>
<version>1.5.2</version>
</dependency>
**
Эта версия используется, потому что сервер работает на Java 1.4. Самые последние версии кварца сгенерировали ошибки при запуске приложения **
Я попытался запустить выражение cron один раз в 1:00 с понедельника по пятницу. (0 0 1? * MON-FRI)
Я пробовал каждый день в 00:00 (0 0 0? * * *)
Ссылка: Генератор хрон https://www.freeformatter.com/cron-expression-generator-quartz.html
Класс
package com.everis.centers;
import java.util.TimeZone;
import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import com.everis.centers.job.ExecuteJob;
public class ExportsApplication {
private static final String PERIOD = "0 0 1 ? * MON-FRI";
private static final String PERIOD_2 = "0 0 0 ? * * *";
public static void main(String[] args) {
try {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler scheduler = sf.getScheduler();
JobDetail job = new JobDetail("exportJob", "vj1", ExecuteJob.class);
CronTrigger ct = new CronTrigger("exportTrigger", "vt1", PERIOD);
ct.setTimeZone(TimeZone.getTimeZone("America/Sao_Paulo"));
scheduler.scheduleJob(job, ct);
scheduler.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Если вы используете выражение cron (0 * / 2 *? * *) для запуска каждые 2 минуты в день. Работает нормально.
Я не понимаю причину проблемы не только выступать один раз в день в 1 час ночи. Если кто-то может помочь, я очистил всю документацию.
Obs
То, что я понял, было то, что когда время выполнения достигнуто, оно выполняется в цикле. То есть, если я установлю 1 час ночи с того времени, оно будет выполнено в цикле. Вместо того, чтобы бежать один раз и ждать следующего дня.