Podaj strefę czasową na Spring @Scheduled?
Jak mogę skonfigurować strefę czasową na wiosnę@Planowy praca cron?
Tło:
Mam pracę, która wykonuje się raz dziennie, powiedzmy 2 po południu, używając Springa@Scheduled
adnotacja:
@Scheduled(cron = "0 0 14 * * *")
public void execute() {
// do scheduled job
}
Problem polega na tym, że godzina dwunasta różni się w zależności od serwera, ponieważ Spring używa goTimeZone.getDefault()
wewnętrznie. PonadtoJavaDoc zTimeZone.getDefault()
stwierdza, że:
Pobiera domyślną strefę czasową dla tego hosta. Źródło domyślnej strefy czasowej może się różnić w zależności od implementacji.
Innymi słowy, strefa czasowa nie jest określona. Może zależeć od implementacji JVM, konfiguracji strefy czasowej serwera, lokalizacji serwera i / lub innych nieznanych czynników. W związku z tym zadanie cron uruchamia się w różnych momentach na różnych serwerach, chyba że istnieje sposób jawnego ustawienia strefy czasowej, która powinna być używana?
Używam Spring 3.2.2.
Aktualizacja
Od wiosny 4, wiosna JiraSPR-10456 zostało rozwiązane. W konsekwencji@Scheduled
adnotacja ma nowystrefa dokładnie dla tego celu.