Die Ausführungsumgebung für lange Laufzeit (Long-Running Execution Environment) verwendet Prüfpunktalgorithmen, um zu bestimmen, wann globale Transaktionen, unter denen Stapelabschnitte aufgerufen werden, festgeschrieben werden sollen. Diese Algorithmen werden über die xJCL-Definition auf einen Stapeljob angewendet. Merkmale, die für Prüfpunktalgorithmen in xJCL angegeben sind, ermöglichen die Anpassung des Prüfpunktverhaltens, z. B. Zeitlimits für Transaktionen und Prüfpunktintervallen, an Stapelabschnitte. WebSphere Extended Deployment stellt einen zeitbasierten und einen satzbasierten Prüfpunktalgorithmus zur Verfügung und definiert ein Service Provider Interface (SPI) zum Erstellen weiterer benutzerdefinierter Prüfpunktalgorithmen.
Bei jeder Iteration der Methode processJobStep, die für einen Jobabschnitt ausgeführt wird, tätigt die LREE eine Rückfrage an den Prüfpunktalgorithmus, der auf diesen Schritt angewendet wurde, um festzustellen, ob sie die globale Transaktion festschreiben soll. Callback-Methoden für den Prüfpunktalgorithmus ermöglichen der LREE, den Algorithmus zu informieren, wenn eine globale Transaktion festgeschrieben oder gestartet wurde. Auf diese Weise kann der Algorithmus den Lebenszyklus der globalen Transaktion überwachen. Bei jeder Iteration der Methode processJobStep ruft die LREE die Callback-Methode ShouldCheckpointBeExecuted für den Algorithmus auf, um festzustellen, ob die Transaktion festgeschrieben werden soll und der Algorithmus das Prüfpunktintervall über diese Methode steuern soll.
Lesen Sie die Informationen zur Stapel-API für das Prüfpunktalgorithmus-SPI, mit dem benutzerdefinierte Prüfpunktalgorithmen erstellt werden können, im Abschnitt "Referenzen" des Infocenter. Der Klassenname lautet com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
Die Prüfpunktalgorithmen werden mit diesem Produkt geliefert: der zeitbasierte Algorithmus und der satzbasierte Algorithmus. Beide Algorithmen werden in den folgenden Abschnitten erläutert.
<checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> <prop name="TransactionTimeOut" value="30" /> </props> </checkpoint-algorithm>
Die Werte für die Merkmale "interval" und "TransactionTimeOut" im obigen Beispiel sind in Sekunden ausgedrückt.
Der satzbasierte Prüfpunktalgorithmus schreibt globale Transaktionen bei einer bestimmten Anzahl von Iterationen der Methode processJobStep für einen Stapelabschnitt fest. Jeder Aufruf der Methode processJobStep wird als eine Iteration des Satzes behandelt. Beachten Sie, dass processJobStep bei jedem Aufruf mehrere Sätze aus einem Batch-Datenstrom abrufen kann, im Falle dieses Prüfpunktalgorithmus entspricht ein Satz einem Aufruf von processJobStep.
<checkpoint-algorithm name="recordbased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname> <props> <prop name="recordcount" value="1000" /> <prop name="TransactionTimeOut" value="60" /> </props> </checkpoint-algorithm>
Die Einheit des Merkmals TransactionTimeOut im vorherigen Beispiel ist in Sekunden ausgedrückt.
Ist das Transaktionszeitlimit nicht in xJCL angegeben, werden ein Standardwert von 60 Sekunden und eine Standardsatzanzahl von 10000 verwendet.
Prüfpunktalgorithmen werden über xJCL auf einen Stapeljob angewendet. In xJCL können mehrere Prüfpunktalgorithmen deklariert werden; auf jeden Stapeljob kann ein anderer Prüfpunktalgorithmus angewendet werden. Auf einen Stapelabschnitt kann höchstens ein Prüfpunktalgorithmus angewendet werden.
Das folgende Beispiel zeigt, wie Prüfpunktalgorithmen in xJCL deklariert werden:
<job name="PostingsSampleEar"> <checkpoint-algorithm name="timebased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.timebased</classname> <props> <prop name="interval" value="15" /> <prop name=" TransactionTimeOut" value="30" /> </props> </checkpoint-algorithm> <checkpoint-algorithm name="recordbased"> <classname>com.ibm.wsspi.batch.checkpointalgorithms.recordbased</classname> <props> <prop name="recordcount" value="1000" /> <prop name="TransactionTimeOut" value="60" /> </props> </checkpoint-algorithm> <job-step name="Step1"> <checkpoint-algorithm-ref name="timebased" /> </job-step> <job-step name="Step2"> <checkpoint-algorithm-ref name="recordbased" /> </job-step> </job>
Related concepts
Stapelprogrammiermodell