Im Allgemeinen sollten Sie Ihre geplante Logik implementieren, festlegen, wann sie ausgeführt werden soll, und Ihre geplanten Aufträge initialisieren, wenn der Anwendungsserver startet.
Implementierung der geplanten Logik
Ihre geplante Klasse sollte Folgendes implementieren org.quartz.Job
Schnittstelle und überschreiben Sie deren ausführen() die die Logik Ihres geplanten Auftrags enthält. In Ihrem Fall ist es die Methode zur Aktualisierung der XML-Datei. Sie sollten dafür sorgen, dass diese Methode keine Abhängigkeiten von JSF hat, damit sie außerhalb von JSF aufgerufen werden kann.
public class MyScheduledJob implements Job {
public void execute(JobExecutionContext context) throws JobExecutionException {
updateXML();
}
}
Quartz initialisieren und starten
Quarz bietet eine ServletContextListener
genannt. QuartzInitializerListener die es Ihnen ermöglicht, Quartz beim Start des Anwendungsservers zu initialisieren und zu starten.
Fügen Sie diesen Listener zu Ihrem web.xml
<listener>
<listener-class> org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
Standardmäßig sucht es nach einer Datei namens quartz.properties
im Klassenpfad, um Quartz zu initialisieren. Sie können auf este für weitere Informationen über konfigurierbare Optionen, die in quartz.properties
Definieren Sie, welcher Job zu welcher Zeit ausgeführt wird
Sie können es in einer XML-Datei definieren (Die Schemadefinition finden Sie unter ici ) und konfigurieren XMLSchedulingDataProcessorPlugin in quartz.properties
um diese XML zu laden, wenn Quartz initialisiert wird.
Zum Beispiel, in der quartz.properties
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml org.quartz.plugin.jobInitializer.failOnFileNotFound = true
Dann im quartz-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">
<schedule>
<job>
<name>MyScheduledJob</name>
<group>MyScheduledGroup</group>
<description>Job to update XML </description>
<job-class>com.xxxx.xxxx.xxxx.MyScheduledJob </job-class>
</job>
<trigger>
<cron>
<name>midNightTrigger</name>
<job-name>MyScheduledJob</job-name>
<job-group>MyScheduledGroup</job-group>
<!-- It will run every night at 3:30 am -->
<cron-expression>0 30 3 * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
Alle oben genannten Informationen beziehen sich auf die neueste Version 2.1 von Quartz. Sie können sich die Beispielcodes et Tutorials von Quartz für weitere Informationen.