CronJobService
Der CronJobService dient dem zeitgesteuerten Starten von Prozessen. Folgende Möglichkeiten werden geboten, um die Zeitpunkte zu steuern, bei denen ein Start erfolgen soll.
Wiederholtes Starten nach einem gewissen Zeitintervall, d. h. ein Start soll z. B. alle 10 Minuten erfolgen (relative Zeitangabe).
Wiederholtes Starten zu bestimmten Zeiten, z. B. jeden Montag um 13.00 Uhr (absolute Zeitangabe).
Einmaliges Starten zu bestimmten Zeiten, z. B. am 27.01.2010 (absolute Zeitangabe).
Einmaliges oder wiederholtes Starten durch Verwendung der crontab-Syntax.
Jeder zu startende Prozess ist hierbei als Java-Klasse bereitzustellen, die das Interface ITask im Package com.ebd.hub.services.cron implementiert.
XML-Konfiguration
Wichtiger Hinweis: Die Verfügbarkeit eines Services hängt von der erworbenen Lizenz ab und davon, ob der Service innerhalb der Konfigurationsdatei ./etc/factory.xml der Service-Factory eingetragen wurde (Änderungen erfordern Server-Neustart!). Dort finden Sie auch die zuständige Konfigurationsdatei für einen Service, ansonsten können Sie die Konfigurationsdatei des Services auch direkt in der GUI des Services bearbeiten (Änderungen erfordern Service-Neustart!).
Hinzufügen eines Cronjobs
Folgendes XML-Fragment wird benötigt, um dem CronJobService einen neuen Cronjob hinzuzufügen.
<
Call
name
=
"addJob"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.CronJob"
>
<
Arg
>Cronjobname</
Arg
>
<
Arg
>
<
New
class
=
"Klassenname des Cronjobs"
>
</
New
>
</
Arg
>
[Zeitsteuerungsspezifische Einstellungen]
</
New
>
</
Arg
>
</
Call
>
Das erste Argument legt hierbei den Namen des Cronjobs fest, unter dem dieser in der Liste erscheinen soll, das zweite Argument enthält die ITask-implementierende Klasse, die vom CronJobService ausgeführt werden soll.
Je nachdem, welche Art von Zeitsteuerung gewählt wird, unterscheidet sich der nachfolgende XML-Anteil. Dies wird im Folgenden beschrieben.
Zeitintervallgesteuerte Ausführung ohne Gültigkeitsbereich
Soll der Cronjob wiederholt nach Ablauf einer bestimmten Zeit gestartet werden, ist folgendes XML-Fragment zu verwenden.
<
Call
name
=
"setTimeSchedule"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.Schedule"
>
<
Arg
type
=
"long"
>3600000</
Arg
>
</
New
>
</
Arg
>
</
Call
>
Die als Argument übergebene Zahl repräsentiert die Zeit zwischen zwei Aufrufen in Millisekunden, im angegebenen Beispiel also eine Stunde.
Achtung: Beim Start des Servers bzw. des Services wird der Cronjob nicht sofort aufgerufen. Wird der Server oder der Service kurz vor dem erneuten Aufruf heruntergefahren, bzw. gestoppt, kann dies dazu führen, dass die Zeit zwischen zwei Aufrufen bis zu doppelt so lange dauern kann wie eventuell erwartet, da die Wartezeit für die Ausführung wieder von vorne beginnt.
Zeitintervallgesteuerte Ausführung mit Gültigkeitsbereich
Soll der Cronjob wiederholt nach Ablauf einer bestimmten Zeit gestartet werden, aber eingeschränkt auf einen bestimmten Zeitraum, ist folgendes XML-Fragment zu verwenden.
<
Call
name
=
"setTimeSchedule"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.Schedule"
>
<
Arg
type
=
"long"
>3600000</
Arg
>
<
Call
name
=
"setStart"
>
<
Arg
type
=
"int"
>2003</
Arg
>
<
Arg
type
=
"int"
>8</
Arg
>
<
Arg
type
=
"int"
>23</
Arg
>
<
Arg
type
=
"int"
>5</
Arg
>
<
Arg
type
=
"int"
>0</
Arg
>
</
Call
>
<
Call
name
=
"setStop"
>
<
Arg
type
=
"int"
>2013</
Arg
>
<
Arg
type
=
"int"
>8</
Arg
>
<
Arg
type
=
"int"
>22</
Arg
>
<
Arg
type
=
"int"
>17</
Arg
>
<
Arg
type
=
"int"
>0</
Arg
>
</
Call
>
</
New
>
</
Arg
>
</
Call
>
Das obige Beispiel schränkt den Cronjob auf die Zeit zwischen dem 23.08.2003, 5.00 Uhr und dem 22.08.2013, 17.00 Uhr ein.
Soll nur ein Anfangsdatum oder nur ein Enddatum gesetzt werden, kann der jeweilige andere Block (setStop, bzw. setStart) einfach weggelassen werden.
Tageszeitpunktgesteuerte Ausführung ohne Gültigkeitsbereich
Soll der Cronjob jeden Tag zu einem bestimmten Zeitpunkt und ab da nach einem bestimmten Intervall laufen, kann dies über folgendes XML-Fragment eingestellt werden.
<
Call
name
=
"setTimeSchedule"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.Schedule"
>
<
Arg
type
=
"int"
>13</
Arg
>
<
Arg
type
=
"int"
>31</
Arg
>
<
Arg
type
=
"long"
>3600000</
Arg
>
</
New
>
</
Arg
>
</
Call
>
Das obige Beispiel lässt den Cronjob um 13:31 Uhr starten und ab da jede weitere Stunde.
Tageszeitpunktgesteuerte Ausführung mit Gültigkeitsbereich
Soll der Cronjob jeden Tag zu einem bestimmten Zeitpunkt und ab da nach einem bestimmten Intervall aber eingeschränkt auf einen bestimmten Zeitraum gestartet werden, kann dies über folgendes XML-Fragment eingestellt werden.
<
Call
name
=
"setTimeSchedule"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.Schedule"
>
<
Arg
type
=
"int"
>13</
Arg
>
<
Arg
type
=
"int"
>31</
Arg
>
<
Arg
type
=
"long"
>3600000</
Arg
>
<
Call
name
=
"setStart"
>
<
Arg
type
=
"int"
>2003</
Arg
>
<
Arg
type
=
"int"
>8</
Arg
>
<
Arg
type
=
"int"
>23</
Arg
>
<
Arg
type
=
"int"
>5</
Arg
>
<
Arg
type
=
"int"
>0</
Arg
>
</
Call
>
<
Call
name
=
"setStop"
>
<
Arg
type
=
"int"
>2013</
Arg
>
<
Arg
type
=
"int"
>8</
Arg
>
<
Arg
type
=
"int"
>22</
Arg
>
<
Arg
type
=
"int"
>17</
Arg
>
<
Arg
type
=
"int"
>0</
Arg
>
</
Call
>
</
New
>
</
Arg
>
</
Call
>
Starten des Cronjobs zu genau festgelegten Zeitpunkten (TimeTable)
Soll der Cronjob nur zu ganz bestimmten Zeitpunkten gestartet werden, kann dies über folgendes XML-Fragment eingestellt werden.
<
Call
name
=
"setTimeSchedule"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.Schedule"
>
<
Call
name
=
"addTimeTable"
>
<
Arg
>
<
New
class
=
"com.ebd.hub.services.cron.TimeTable"
>
<
Arg
type
=
"int"
>2000</
Arg
>
<
Arg
type
=
"int"
>12</
Arg
>
<
Arg
type
=
"int"
>31</
Arg
>
<
Arg
type
=
"int"
>12</
Arg
>
<
Arg
type
=
"int"
>0</
Arg
>
</
New
>
</
Arg
>
</
Call
>
</
New
>
</
Arg
>
</
Call
>
Dieses Beispiel lässt den Cronjob am 31.12.2000 um 12:00 Uhr starten.
Allgemeine Einstellungen
(1) Hier kann das Logging für den CronService konfiguriert werden. Möglich ist das Ein- und Ausschalten als solches bzw. die Einstellung welcher LogService und welcher LogManager die Meldungen erhalten soll. Mit Klick auf den Button Setzen werden die Änderungen übernommen.
(2) Liste der verfügbaren Cronjobs. Angezeigt wird der Status, der Zeitpunkt des letzten Durchlaufes und der Zeitpunkt für den nächsten Durchlauf. Hinweis: Siehe Abschnitt "System-Cronjobs" unten.
(3) Über das Kontextmenü können Sie einen Cronjob anzeigen, aktivieren, starten, entfernen und hinzufügen. Sie können auch explizit für einen speziellen Cronjob den Verbose-Modus aktivieren (anstatt diesen für den gesamten Service zu aktivieren).
Hinzufügen eines Cronjobs über die Admin-Konsole
Die Admin-Konsole bieten die Möglichkeit Cronjobs hinzuzufügen. Achtung: Die Cronjobs, die über die Admin-Konsole hinzugefügt werden, gehen nach einem Neustart verloren. Beim Start des CronJobServices werden nur die in der XML-Datei konfigurierten Cronjobs hinzugefügt.
(1) Der Name des Cronjobs, der in der Liste der Cronjobs angezeigt wird.
(2) Der Name (mit Package) der Klasse, die das Interface ITask implementiert.
(3) Der Gültigkeitszeitraum für diesen Cronjob.
Im folgenden sehen Sie die verschiedenen Zeiteinstellungsmöglichkeiten für Cronjobs.
(4) Hier kann das Zeitintervall in Sekunden oder Minuten angegeben werden.
(5) Hier kann ein absoluter Zeitpunkt angegeben werden. Der Cronjob läuft dann einmal zu dem angegebenen Zeitpunkt.
(6) Hier kann ein relativer Zeitpunkt angegeben werden, z. B. jeden Sonntag um 17:30.
(7) Hier können über das Kontextmenü Werte für Sekunden, Minuten, Stunden, Tage, Monate, und Wochentage hinterlegt. Für weitere Informationen sei hier auf den Abschnitt Crontab-Syntax verwiesen.
Loglevel-Abhängigkeiten
Änderungen des Loglevels beim LogService können Einfluss auf den Umfang der Meldungen von Cronjobs haben. Diese sind jedoch von der konkreten Implementierung des jeweiligen Cronjobs abhängig und können hier nicht beschrieben werden.
Das Setzen des Verbose-Modes hat beim CronService keinen Effekt.