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


Eine Stapelanwendung mit POJO erstellen

In diesem Artikel werden die Schritte beschrieben, die erforderlich sind, um eine Stapelanwendung mit dem Programmiermodell "Plain Old Java Object" (POJO) zu erstellen und zu packen.

Vorbereitungen

Die Erstellung einer POJO-basierten Stapelanwendung ist die bevorzugte Methode für das Erstellen einer Stapelanwendung. Weitere Informationen finden Sie in den Artikeln Stapelprogrammiermodell und POJO-Programmiermodell .

Alternativ können Sie die folgenden Scripts verwenden, um die Schritte 3 bis 5 im folgenden Prozedurabschnitt zu ersetzen:

Setzen Sie die angepasste Eigenschaft com.ibm.websphere.ejbcontainer.expandCMPCFJNDIName der Java Virtual Machine. Weitere Informationen hierzu finden Sie im Artikel Angepasste Eigenschaften der Java Virtual Machine .

WSBatchPackager.sh
                 -properties=<Name der Eigenschaftendatei>
                 [-debug]

oder

WSBatchPackager.sh
		-appname=<Anwendungsname>
		-jobsteps="{{<EJB-Name>, <JNDI-Name>, <Klasse des POJO-Abschnitts> [, jar file, utility jars]}, ...}"
-jarfile=<JAR-Datei mit den Klassen der POJO-Abschnitte>
-earfile=<Name der EAR-Ausgabedatei>
[-utilityjars=<durch Semikolons getrennte Liste von Dienstprogramm-JARs>]
[-epjndiname=<JNDI-Name der Datenquelle des Endpunkts/Prüfpunkts>]
		[-nonxadsjndiname=<JNDI-Name der Nicht-XA-Datenquelle für CursorHoldableJDBCReader>;<JNDI-Name 2 der Nicht-XA-Datenquelle>;...]
		[-debug]

Alternativ kann das Packprogramm wie folgt aufgerufen werden:

  java -jar batchpackager.jar 
                 -properties=<Name der Eigenschaftendatei>
                 [-debug]

oder

  java -jar batchpackager.jar
                 -appname=<Anwendungsname>
                 -jobsteps="{{<EJB-Name>, <JNDI-Name>, <Klasse des POJO-Abschnitts> [, jar file, utility jars]}, ...}"
                 -jarfile=<JAR-Datei mit den Klassen der POJO-Abschnitte>
                 -earfile=<Name der EAR-Ausgabedatei>
                 [-utilityjars=<durch Semikolons getrennte Liste von Dienstprogramm-JARs>]
                 [-epjndiname=<JNDI-Name der Datenquelle des Endpunkts/Prüfpunkts>]
                 [-nonxadsjndiname=<JNDI-Name der Nicht-XA-Datenquelle für CursorHoldableJDBCReader>;<JNDI-Name 2 der Nicht-XA-Datenquelle>;...]
                 [-debug]

Prozedur

  1. Erstellen Sie Stapeljobabschnitte. Erstellen Sie eine neue Java-Klasse, die die Schnittstelle "com.ibm.websphere.BatchJobStepInterface" implementiert. Implementieren Sie die Geschäftslogik.

    Wenn der Abschnitt genau einen Eingabedatenstrom und einen Ausgabedatenstrom hat, können Sie alternativ den Generischer Stapelschritt (GenericXDBatchStep) verwenden.

  2. Erstellen Sie Stapeldatenströme. Erstellen Sie eine neue Java-Klasse, die die Schnittstelle "com.ibm.websphere.batch.BatchDataStream" implementiert. Stapeldatenströme werden über die Geschäftslogik (d. h. über Stapeljobabschnitte) durch den Aufruf von "BatchDataStreamMgr" mit Job-ID und Abschnitts-ID aufgerufen. Die Job-ID und die Abschnitts-ID werden aus der Eigenschaftenliste der Abschnitts-Bean mit den Schlüsseln "BatchConstants.JOB_ID" und "BatchConstants.STEP_ID" abgerufen. Ordnen Sie "BatchConstants.JOB_ID" der Angabe "com.ibm.websphere.batch.JobID" und "BatchConstants.STEP_ID" der Angabe "com.ibm.websphere.batch.StepID" zu. Sie sollten bereits Zugriff auf die Klasse "BatchConstants" haben.
    Das Framework für Stapeldatenströme bietet verschiedene sofort einsatzfähige Muster, die mit verschiedenen Typen von Datenströmen verwendet werden können, z. B. Dateidaten, Datenbankdaten usw. Gehen Sie wie folgt vor, um das Framework für Stapeldatenströme zu verwenden:
    • Geben Sie den Datenstromtyp an, mit dem sie arbeiten möchten (Textdatei, Bytedatei, JDBC, z/OS-Datenstrom).
    • Geben Sie an, ob Sie Daten in diesen Datenstrom schreiben oder aus ihm lesen möchten.
    • Sehen Sie sich die Tabelle im Artikel Framework und Muster für Stapeldatenströme an, und wählen Sie die Klasse aus der Spalte für Unterstützungsklassen aus, die mit dem Datenstromtyp und der Operation übereinstimmt. Wenn Sie z. B. Daten aus einer Textdatei lesen möchten, müssen Sie TextFileReader auswählen.
    • Implementieren Sie die in der Spalte für Musternamen aufgelistete Schnittstelle, die der Unterstützungsklasse entspricht, die Sie im vorherigen Schritt ausgewählt haben. Die Unterstützungsklasse verarbeitet alle auf den Datenstrom und das Stapelprogrammiermodell bezogenen Abrechnungsaktivitäten und ermöglichen der Implementierungsklasse, sich auf die Verarbeitungslogik des Datenstroms zu konzentrieren.
    • Deklarieren Sie die Unterstützungsklasse und Ihre Implementierungsklasse in der xJCL.
    • Wiederholen Sie diese Prozedur für jeden Datenstrom, der in Ihrem Abschnitt erforderlich ist.
    		<batch-data-streams>
       <bds>
    	<logical-name>inputStream</logical-name>
     	<props>
     	    <prop name="PATTERN_IMPL_CLASS" value="MyBDSStreamImplementationClass"/>
                <prop name="file.encoding" value="8859_1"/>
                <prop name="FILENAME" value="${inputDataStream}" />
                <prop name="PROCESS_HEADER" value="true"/>
                <prop name="AppendJobIdToFileName" value="true"/>
            </props>
    	<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.FileByteReader</impl-class>
       </bds>
    Anmerkung: Die PATTERN_IMPL_CLASS bezeichnet die Benutzerimplementierung des BDS-Framework-Musters und die Eigenschaft "impl-class" die Unterstützungsklasse.
  3. Deklarieren Sie einen Stapeljobcontroller.
    1. Fügen Sie dem Implementierungsdeskriptor eine Stateless-Session-Bean hinzu, und verweisen Sie auf die von WebSphere Extended Deployment bereitgestellte Implementierungsklasse, indem Sie "com.ibm.ws.batch.BatchJobControllerBean" als Bean-Klasse angeben. Führen Sie diese Aktion nur einmal pro Stapelanwendung aus.
    2. Verwenden Sie "com.ibm.ws.batch.BatchJobControllerHome" als ferne Home-Schnittstellenklasse und "com.ibm.ws.batch.BatchJobController" als Remote-Schnittstellenklasse.
  4. Deklarieren Sie den Wrapper für die Stapeljobabschnitte für POJO-Stapelabschnitte.
    1. Fügen Sie dem Implementierungsdeskriptor eine CMP-Entity-Bean als Wrapper für den Stapelabschnitt hinzu, und verweisen Sie auf die von WebSphere XD bereitgestellte Implementierungsklasse, indem Sie "com.ibm.ws.batch.DefaultBatchJobStepBean" als Bean-Klasse angeben. Führen Sie diese Aktion einmal pro eindeutigem Stapelabschnitt in Ihrer Anwendung aus.
    2. Verwenden Sie "com.ibm.ws.batch.BatchJobStepLocalHomeInterface" als lokale Home-Schnittstellenklasse und "com.ibm.ws.batch.BatchJobStepLocalInterface" als lokale Schnittstellenklasse.
    3. Geben Sie "com.ibm.websphere.batch.BatchJobStepKey" als Schlüsselklasse an, und fügen Sie die beiden CMP-Attribute "jobID" und "stepID" mit dem Typ "java.lang.String" hinzu.
    4. Definieren Sie einen Umgebungseintrag im EJB-Implementierungsdeskriptor, um dem Wrapper die Implementierung des POJO-Stapelabschnitts zuzuordnen. Geben Sie "POJOclass" als Namen des Umgebungseintrags und den Klassennamen des POJO-Stapeljobabschnitts als Wert des Umgebungseintrags ein. Verwenden Sie "java.lang.String" als Typ für den Umgebungseintrag an.
  5. Konfigurieren Sie den EJB-Implementierungsdeskriptor.
    1. EJB-Ressourcenreferenz: Fügen Sie der Bean des Stapeljobcontrollers eine Referenz für jeden Stapelabschnitt hinzu.
    2. WorkManager: Konfigurieren Sie in der Controller-Bean eine Ressourcenreferenz auf den Standard-WorkManage/BatchWorkManager des Typs "commonj.work.WorkManager".
    3. Cache: Legen Sie für Jobabschnitts-Wrapper den Bean-Cache auf "Sofort aktivieren" und "Bei Aktivierung laden".
    4. Transaktionen: Um sicherzustellen, dass Jobabschnitte unter einer globalen Transaktion ausgeführt werden, setzen Sie "transaction-attribute" auf "REQUIRED".

Beispiel

appname=testBatchApp
jarfile=c:\\websphere\\appserver\\temp\\pojoclasses.jar
earfile=TestBatchAppEAR

ejbname.1=POJOStep1
jndiname.1=ejb/POJOStep1
jobstepclass.1=com.ibm.ws.batch.sample.POJOStep1.class

ejbname.2=POJOStep2
jndiname.2=ejb/POJOStep2
jobstepclass.2=com.ibm.ws.batch.sample.POJOStep2.class



Zugehörige Konzepte
POJO-Programmiermodell
Zugehörige Tasks
Eine einfache Stapelanwendung entwickeln
Zugehörige Informationen
Angepasste Eigenschaften der Java Virtual Machine
Task-Artikel    

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/tcgbuildbatch.html