WebSphere Extended Deployment Compute Grid, Version 6.1.1
             Betriebssysteme: AIX, HP-UX, Linux, Solaris, Windows,


Stapeljobabschnitte

Sie können die Tasks einer Stapelanwendung in Stapelabschnitte aufteilen. Stapelabschnitte werden als lokale containergesteuerte Enterprise-JavaBeans (EJB) implementiert, die die Schnittstelle "com.ibm.websphere.batch.BatchJobStepLocalInterface" als Geschäftsschnittstelle angeben. Stapeljobabschnitte werden nacheinander ausgeführt.

Callback-Methoden in der Schnittstelle "BatchJobStepLocalInterface" erlauben den Compute-Grid-Endpunkten, beim Ausführen eines Stapeljobs Stapelabschnitte auszuführen.

Eine Stapelabschnitts-EJB enthält stapelfähige Geschäftslogik, die für einen Abschnitt des Stapeljobs ausgeführt werden soll. Normalerweise enthält ein Stapelabschnitt Code, mit dem ein Satz aus einem Stapeldatenstrom gelesen werden kann. Dieser Satz wird verwendet, um Geschäftslogik auszuführen, anschließend wird der nächste Satz gelesen. Die Methode "processJobStep" einer Stapelabschnitts-EJB wird von den Compute-Grid-Endpunkten in einer Stapelschleife aufgerufen. Diese Methode enthält die gesamte Logik, die als Stapel auf Daten angewendet werden kann.

Die Compute-Grid-Endpunkte rufen Methoden der Stapelabschnitts-EJB in einer globalen Transaktion auf. Diese globale Transaktion wird von den Compute-Grid-Endpunkten gesteuert. Das Verhalten der Transaktion, z. B. das Zeitlimit oder das Festschreibungsintervall für die Transaktion, wird von dem Prüfpunktalgorithmus gesteuert, der dem Stapeljob, zu dem der Abschnitt gehört, zugeordnet ist.

Die folgenden Callback-Methoden für Compute-Grid-Endpunkte sind in der Schnittstelle "BatchJobStepLocalInterface" enthalten und werden von Compute-Grid-Endpunkten in der folgenden Reihenfolge aufgerufen:
  1. setProperties(java.util.Properties properties): Stellt Eigenschaften, die in xJCL definiert sind, für Jobabschnitte in einem java.util.Properties-Objekt zur Verfügung. Diese Methode wird in einer globalen Transaktion aufgerufen.
  2. void createJobStep(): Zeigt dem Abschnitt an, dass er initialisiert wurde. Initialisierungslogik, z. B. das Abrufen einer Kennung für einen Stapeldatenstrom, kann hier platziert werden. Diese Methode wird in einer globalen Transaktion aufgerufen.
  3. int processJobStep(): Wird wiederholt von den Compute-Grid-Endpunkten in einer Stapelschleife aufgerufen, bis der Rückkehrcode dieser Methode, der als ganze Zahl dargestellt wird, anzeigt, dass der Abschnitt die Verarbeitung beendet hat. Sehen Sie sich "BatchConstants" in der Anwendungsprogrammierschnittstelle für Stapeljobs an, um festzustellen, welche Rückkehrcodes zurückgegeben werden können. Der Rückkehrcode "BatchConstants.STEP_CONTINUE" signalisiert den Compute-Grid-Endpunkten, dass sie diese Methode in der Stapelschleife weiterhin aufrufen sollen. Der Rückkehrcode "BatchConstants.STEP_COMPLETE" zeigt den Compute-Grid-Endpunkten an, dass der Abschnitt abgeschlossen ist, und destroyJobStep wird aufgerufen.
  4. int destroyJobStep(): Zeigt dem Abschnitt die Fertigstellung an. Der Rückkehrcode dieser Methode ist beliebig und kann vom Entwickler der Stapelanwendung ausgewählt werden. Dieser Rückkehrcode wird in der Datenbank der Compute-Grid-Endpunkte gespeichert und repräsentiert den Rückkehrcode des Stapelabschnitts. Wenn der Ergebnisalgorithmus dem Stapeljob zugeordnet ist, wird dieser Rückkehrcode an ihn übergeben. Enthält die xJCL des Stapeljobs bedingte, auf Rückkehrcodes basierende Logik, verwenden die Compute-Grid-Endpunkte diesen Rückkehrcode, um die Logik auszuwerten.

Die Methode "getProperties()" in der Schnittstelle "BatchJobStepLocalInterface" wird gegenwärtig nicht von den Compute-Grid-Endpunkten aufgerufen. Die Methode ist in der Schnittstelle für die Symmetrie und eine mögliche spätere Verwendung enthalten.

Fehlerbehebung und Stapelentwicklung

  • Sie müssen den Implementierungsdeskriptor der Stapelcontroller-Bean im EJB-Implementierungsdeskriptor einer Stapelanwendung deklarieren und lokale EJB-Referenzen in die Abschnitts-Enterprise-Bean einfügen, die in einer Stapelanwendung verwendet wird. Pro Stapelanwendung kann nur eine Controller-Bean definiert werden.
  • Setzen Sie alle Transaktionsattribute aller Stapelabschnittsmethoden auf "erforderlich".
  • Der Entwickler der Stapelanwendung muss sicherstellen, dass transaktionsorientierte Arbeiten, die in den Callback-Methoden des Stapelabschnitts ausgeführt werden, die globale Transaktion übernehmen, die von den Compute-Grid-Endpunkten gestartet wurde. Diese Aktion stellt sicher, dass die in einem Stapelabschnitt ausgeführten Arbeiten nur an jedem Prüfpunkt festgeschrieben und nur rückgängig gemacht werden, wenn der ein Fehler im Abschnitt auftritt.
  • Wenn der Stapelabschnitt einen Stapeldatenstrom verwendet, dessen Daten sich im Dateisystem des lokalen Anwendungsservers befinden, in dem die Stapelanwendung implementiert wird, müssen Sie bestimmte Schritte ausführen, um die Szenarios für den Neustart von Jobs zu unterstützen. Wenn eine solche Stapelanwendung auf Anwendungsservern implementiert wird, die auf mehreren Systemen ausgeführt werden können - z. B. bei einer Implementierung in einem dynamischen Cluster, der sich in einer Knotengruppe mit mehreren Knoten-Membern befindet - und wenn ein Stapeljob, der für eine solche Anwendung ausgeführt wird, abgebrochen und anschließend erneut gestartet wird, gibt es keine Garantie, dass die Anforderung des Neustarts an das System gesendet wird, auf dem der Stapeljob ursprünglich ausgeführt wurde. In diesem Szenario wird bei der Verteilung die Anforderung des Neustarts an einen Anwendungsserver gesendet, der auf einem anderen System ausgeführt wird. Daher sind in den Fällen, in denen die dateibasierte Affinität erforderlich ist, folgende Lösungen zur Unterstützung des Szenarios "Neustart des Jobs" möglich:
    • Vergewissern Sie sich, dass die Daten allen Systemen, auf denen die Stapelanwendung gestartet werden kann, zur Verfügung stehen. Verwenden Sie für dieses Beispiel ein Netzdateisystem. Diese Aktion kann die Leistung der Anwendung beeinträchtigen.
    • Implementieren Sie die Anwendung in Anwendungsservern, die nur auf der Maschine ausgeführt werden können, auf der die lokalen Daten vorhanden sind. Führen Sie diese Aktion aus, indem Sie die Anwendung in einem dynamischen Cluster implementieren, der sich in einer Knotengruppe befindet, die nur einen Member-Knoten enthält.



Zugehörige Konzepte
Stapelprogrammiermodell
Stapel-Controller-Bean
Stapeldatenströme
Compute-Grid-Jobs und ihre Umgebung verwalten
Zugehörige Tasks
Eine einfache Stapelanwendung entwickeln
Konzeptartikel    

Nutzungsbedingungen | Feedback

Letzte Aktualisierung: 24.09.2009 16.46 Uhr EDT
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r1m1/index.jsp?topic=/com.ibm.websphere.gridmgr.doc/info/scheduler/cxdbatchstp.html