2016-10-25 3 views
1

Ich verwende quartz scheduler mit meiner spring App. Alles funktioniert bisher gut, aber während ich einen geplanten Job in Zukunft, sagen wir mal einen Monat, ausprobiere, plane ich einen Job und ändere dann die Systemzeit meines linux Rechners auf diesen Tag und 5 Minuten bevor der Auslöser ausgelöst werden soll. Ich wartete, die Feueranzünder kamen und vergingen, aber sie schossen nicht. Der andere Ansatz, den ich testen konnte, war, die Feuerzeit in der Oracle-Tabelle zu ändern, so dass wir die Systemzeit nicht ändern müssen. Es funktioniert auch, wenn ich einen Job für den nächsten Tag um 4 plane (ohne Notwendigkeit, ein Datum zu ändern, aber ich wartete 24 Stunden dafür, um zu schießen, und es tat). Ich verstehe nicht, warum beschleunigte Systemzeit nicht mit Quarz funktioniert. Jede Erklärung wäre hilfreich. Vielen Dank!Quartz Scheduler Testszenario funktioniert nicht

P.S: Ich verwende die Kernbibliotheken von Quarz und nicht Spring integrierten Quarz-Bibliotheken.

+0

Der Quartz Scheduler wahrscheinlich nimmt die Systemzeit auf, wenn er startet und hält eine Uhr/Zähler von seiner eigenen. Die Tatsache, dass Sie die Systemzeit ändern, wird von Quartz nie aufgenommen, da Quartz seinen eigenen Clock/Counter-Wert verwendet. Die einzige Möglichkeit, dies zu überprüfen, wäre es, durch den Quartz-Quellcode zu schwimmen ... – lincolnadym

+0

@lincolnadym das wird schwer zu erkennen sein. Wenn ich die Systemzeit ändere, starte ich meinen Scheduler neu und die Logs zeigen das aktualisierte Datum-Zeit an. – Gurkha

Antwort

0

Nach einiger Zeit habe ich die Protokolle für org.quartz aktiviert und festgestellt, dass quartz nicht initialisiert wurde, wenn die App geladen wird. Nach Snippet quartz während des Startvorgangs initialisiert werden:

<servlet> 
     <servlet-name>QuartzInitializer</servlet-name> 
     <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> 
     <init-param> 
      <param-name>shutdown-on-unload</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>start-scheduler-on-load</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <init-param> 
      <param-name>config-file</param-name> 
      <param-value>quartz.properties</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
Verwandte Themen