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.

questionAnswers(4)

yourAnswerToTheQuestion