2013-10-02 13 views
6

Coś, co nie jest jasne. Załóżmy, że mam zlecenia losowo zaplanowane w ciągu dnia, a każda praca trwa 30 minut. Powiedz, że mam pięć takich zadań, a Tomcat zostaje zabity. Czy zadania są uruchamiane ponownie po uruchomieniu Tomcat z moją aplikacją lub czy bieżące zadania zostały utracone, ponieważ zostały już zwolnione?Praca wykonywana z prądem kwarkowym po zabiciu Tomcat

Odpowiedz

11

Krótka odpowiedź domyślnie Praca aktualnie uruchomione są uważane zwolniony i nie są odzyskiwane

.. ale można ustawić requestRecovery nieruchomości podczas budowy Job (JobDetail) powiedzieć, że Kwarc odzyskać uruchamianie zadań w przypadku awarii, inaczej "twarde zamknięcie".

Cytując z oficjalnej dokumentacji here na dole strony:

RequestsRecovery - jeśli zadanie „żąda zwrotu”, a to jest wykonywany w czasie z "twardego wyłączenia z działalności program planujący (tj. proces, w którym działa awaria lub urządzenie jest wyłączone), to jest ponownie wykonywany po ponownym uruchomieniu programu planującego. W takim przypadku metoda JobExecutionContext.isRecovering() zwróci wartość true.

Więc można zrobić dla exemple:

import static org.quartz.JobBuilder.*; 

... 

JobDetail job = newJob(MyJob.class) 
      .withIdentity("myJob", "group1") 
      .requestRecovery(true) //This is the guy! 
      .build(); 

... 
0

Tomcat nie dba o twoją pracę. Twoim zadaniem jest prawidłowe zakończenie pracy w aplikacji internetowej po jej wyłączeniu.

+0

kim jestem Po nie Quartz ponowić zadania, które zostały aktualnie wykonującego lub ma Quartz je wyrzucić, co oznacza, kwarc nie może czysto odzyskiwania po awarii JVM gdy użytkownik nie ma środków, aby "prawidłowo zakończyć pracę" – user671731

Powiązane problemy