OSGi-Stapelanwendung implementieren

Sie können eine vorhandene Stapelanwendung als OSGi-Anwendung packen. Anschließend implementieren Sie das Paket so, dass Sie Stapelartefakte als Services bereitstellen können, die damit für den Stapelcontainer sichtbar werden.

Informationen zu diesem Vorgang

Packen Sie eine OSGi-Stapelanwendung, ändern Sie die Blueprint-XML-Datei, um die Stapelartefakte als Services zu beschreiben, und exportieren Sie die OSGi-Stapelanwendung dann als Unternehmens-Bundle-Archiv (EBA, Enterprise Bundle Archive). Erstellen Sie dann die xJCL. Implementieren Sie abschließend die OSGi-Stapelanwendung.

Vorgehensweise

  1. OSGi-Stapelanwendung packen.

    Sie packen die OSGi-Stapelanwendung als EBA-Datei. Die EBA-Datei enthält mindestens Ihr Stapel-Bundle, das ein Blueprint-Bundle ist. Das API-Bundle und die Dispatcher-Bundles werden ein einziges Mal im internen Bundle-Repository installiert.

    Lesen Sie den Artikel zum erstellen eines Client-Bundles, und folgen Sie den Schritten zum Packen Ihrer OSGi-Anwendung.

  2. Blueprint-XML-Datei umschreiben.

    Sie müssen die Jobabschnitte und Stapeldatenströme (BDS, Batch Data Streams) als Services deklarieren, damit sie vom Scheduler aufgerufen werden können. Wenn Ihre OSGi-Stapelanwendung einen Algorithmus für Prüfpunktrichtlinien oder einen Ergebnisalgorithmus implementiert, müssen Sie auch jeden Algorithmus, der von der Anwendung implementiert wird, als Service deklarieren.

    1. Deklarieren Sie jeden Jobabschnitt als Blueprint-Service.
      1. Definieren Sie das Attribut "interface".
        1. Wenn der Abschnitt ein rechenintensiver Abschnitt ist, setzen Sie das Attribut auf com.ibm.websphere.ci.CIWork.
        2. Wenn der Abschnitt ein transaktionsorientierter Stapelabschnitt ist, setzen Sie das Attribut auf com.ibm.websphere.batch.BatchJobStepInterface.
      2. Setzen Sie das Attribut "ref" auf die Bean-ID, die die Abschnittsbean deklariert.
      3. Deklarieren Sie eine Eigenschaft mit dem Schlüssel "xjcl:classname" und einem Wert, der die Java™-Klasse angibt, die den Abschnitt implementiert.
      4. Deklarieren Sie eine Bean für die Java-Klasse, die den Abschnitt implementiert.
      5. Setzen Sie das Attribut "scope" auf prototype.

      Beispiel für einen rechenintensiven Abschnitt:

      <bean id="IVTStep1" class="com.ibm.websphere.batch.samples.tests.steps.GenerateDataStep" scope="prototype"/>
      
      <service ref="IVTStep1" interface="com.ibm.websphere.ci.CIWork" id="step1">
      		<service-properties>
      	      	      <entry key="xjcl:classname" value="com.ibm.websphere.batch.samples.tests.steps.GenerateDataStep"/>
      		</service-properties>
      </service>    

      Beispiel für einen transaktionsorientierten Stapelabschnitt:

      <bean id="EchoStep2" class="com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep" scope="prototype"/>
      
      <service ref="EchoStep2" interface="com.ibm.websphere.batch.BatchJobStepInterface" id="echostep1">
      		<service-properties>
      	      	      <entry key="xjcl:classname" value="com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep"/>
      		</service-properties>
      </service>    
    2. Deklarieren Sie jeden Stapeldatenstrom als Blueprint-Service.deklarieren.
      1. Setzen Sie das Attribut "interface" auf com.ibm.websphere.batch.BatchDataStream.
      2. Setzen Sie das Attribut "ref" auf die Bean-ID, die die Stapeldatenstrombean deklariert.
      3. Deklarieren Sie eine Eigenschaft mit dem Schlüssel "xjcl:classname" und einem Wert, der die Java-Klasse angibt, die den Stapeldatenstrom implementiert.
      4. Deklarieren Sie eine Bean für die Java-Klasse, die den Stapeldatenstrom implementiert.
      5. Setzen Sie das Attribut "scope" auf prototype.

      Beispiel für einen Stapeldatenstrom:

      <bean id="output" class="com.ibm.websphere.batch.samples.tests.bds.TestOutputBatchDataStream" scope="prototype"/>
      <service ref="output" interface="com.ibm.websphere.batch.BatchDataStream" id="out1">
      		<service-properties>
            <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.tests.bds.TestOutputBatchDataStream"/>
      		</service-properties>
      </service>    
    3. Deklarieren Sie den Algorithmus für Prüfpunktrichtlinien als Blueprint-Service.

      Wenn Ihre OSGi-Stapelanwendung einen Algorithmus für Prüfpunktrichtlinien implementiert, deklarieren Sie den Algorithmus als Blueprint-Service. Andernfalls können Sie diesen Schritt überspringen.

      1. Setzen Sie das Attribut "interface" auf com.ibm.wsspi.batch.CheckpointPolicyAlgorithm.
      2. Setzen Sie das Attribut "ref" auf die Bean-ID, die die Prüfpunktbean deklariert.
      3. Deklarieren Sie eine Eigenschaft mit dem Schlüssel "xjcl:classname" und einem Wert, der die Java-Klasse angibt, die den Algorithmus für Prüfpunktrichtlinien implementiert.
      4. Deklarieren Sie eine Bean für die Java-Klasse, die den Algorithmus für Prüfpunktrichtlinien implementiert.
      5. Setzen Sie das Attribut "scope" auf prototype.

      Beispiel für einen Algorithmus für Prüfpunktrichtlinien:

      <bean id="chkpt" class="com.ibm.websphere.batch.samples.MyCheckpointAlgorithm" scope="prototype"/>
      <service ref="chkpt" interface="com.ibm.wsspi.batch.CheckpointPolicyAlgorithm" id="ck1">
      		<service-properties>
            <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.MyCheckpointAlgorithm"/>
      		</service-properties>
      </service>    
    4. Deklarieren Sie den Ergebnisalgorithmus als Blueprint-Service.

      Wenn Ihre OSGi-Stapelanwendung einen Ergebnisalgorithmus implementiert, deklarieren Sie den Algorithmus als Blueprint-Service. Andernfalls können Sie diesen Schritt überspringen.

      1. Setzen Sie das Attribut "interface" auf com.ibm.wsspi.batch.ResultsAlgorithm.
      2. Setzen Sie das Attribut "ref" auf die Bean-ID, die die Bean für den Ergebnisalgorithmus deklariert.
      3. Deklarieren Sie eine Eigenschaft mit dem Schlüssel "xjcl:classname" und einem Wert, der die Java-Klasse angibt, die den Ergebnisalgorithmus implementiert.
      4. Deklarieren Sie eine Bean für die Java-Klasse, die den Ergebnisalgorithmus implementiert.
      5. Setzen Sie das Attribut "scope" auf prototype.

      Beispiel für einen Ergebnisalgorithmus:

      <bean id="myres" class="com.ibm.websphere.batch.samples.MyResultsAlgorithm" scope="prototype"/>
      <service ref="myres" interface="com.ibm.wsspi.batch.ResultsAlgorithm" id="r1">
      		<service-properties>
            <entry key="xjcl:impl-class" value="com.ibm.websphere.batch.samples.MyResultsAlgorithm"/>
      		</service-properties>
      </service>    
  3. OSGi-Stapelanwendung als EBA-Datei exportieren.
  4. xJCL erstellen.
    Erstellen Sie die xJCL unter Berücksichtigung von einigen wenigen Abweichungen wie für jede andere Stapelanwendung:
    • Geben Sie mit dem Attribut "application-name" im Jobabschnitt den Namen der implementierten Anlage an. Die implementierte Anlage ist eine Kompositionseinheit.
    • Definieren Sie das Unterelement "classname" des Abschnitts so, dass es der Eigenschaft "xjcl:classname" des Abschnittsservice entspricht.
      Im folgenden Beispiel wird die Eigenschaft "xjcl:classname" von "com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep" aus dem Beispiel für den transaktionsorientierten Stapelabschnitte weiter vorn in dieser Prozedur verwendet.
      <step id=”step1”>
      <classname> com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep</classname>
      </step>
  5. OSGi-Stapelanwendung implementieren.

    Lesen Sie den Artikel zum Implementieren einer OSGi-Anwendung als Geschäftsanwendung, und folgen Sie den dort beschriebenen Schritten.

Ergebnisse

Sie haben eine OSGi-Stapelanwendung gepackt, die Blueprint-XML-Datei geändert, um die Stapelartefakte als Services zu beschreiben, und die OSGi-Stapelanwendung dann als Unternehmens-Bundle-Archiv (EBA, Enterprise Bundle Archive) exportiert. Anschließend haben Sie die xJCL erstellt. Abschließend haben Sie die OSGi-Stapelanwendung implementiert.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_cgbatchosgi
Dateiname:tgrid_cgbatchosgi.html