Déploiement d'une application par lots OSGi

Vous pouvez intégrer une application par lots en tant qu'application OSGi. Vous pouvez ensuite déployer le package de manière à pouvoir exposer des artefacts par lots en tant que services, ce qui rend ces artefacts visibles pour le conteneur de lots.

Pourquoi et quand exécuter cette tâche

Intégrez une application par lots OSGi, modifiez le code XML Blueprint pour décrire les artefacts par lots en tant que services, et exportez l'application par lots OSGi en tant qu'archive EBA (Enterprise Bundle Archive). Créez ensuite le code xJCL. Enfin, déployez l'application par lots OSGi.

Procédure

  1. Intégrez une application par lots OSGi.

    Vous intégrez l'application par lots OSGi en tant qu'archive EBA. L'archive EBA contient au moins votre regroupement par lots, qui est un regroupement Blueprint. Le regroupement d'API et les regroupements de programmes de distribution sont installés une seule fois dans le référentiel de regroupements interne.

    lisez la rubrique relative à la création d'un regroupement client et suivez les étapes permettant d'intégrer votre application OSGi.

  2. Créez le code XML Blueprint.

    Vous devez déclarer les étapes de travail et des flux de données par lots en tant que services de sorte que le planificateur puisse les appeler. Si votre application par lots OSGi implémente un algorithme de stratégie de point de contrôle ou un algorithme de résultats, vous devez également déclarer en tant que service chaque algorithme implémenté par l'application.

    1. Déclarez chaque étape de travail comme service Blueprint.
      1. Définissez l'attribut d'interface.
        1. S'il s'agit d'une étape de calcul intensif, affectez la valeur com.ibm.websphere.ci.CIWork à l'attribut.
        2. S'il s'agit d'une étape par lots transactionnelle, affectez la valeur com.ibm.websphere.batch.BatchJobStepInterface à l'attribut.
      2. Affectez à l'attribut de référence l'ID bean qui déclare le bean d'étape.
      3. Déclarez une propriété avec la clé xjcl:classname et une valeur correspondant à la classe Java™ qui implémente l'étape.
      4. Déclarez un bean pour la classe Java qui implémente l'étape.
      5. Affectez la valeur prototype à l'attribut de portée.

      Exemple d'étape de calcul intensif :

      <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> 

      Exemple d'étape par lots transactionnelle :

      <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. Déclarez chaque flux de données par lots comme service Blueprint.
      1. Affectez la valeur com.ibm.websphere.batch.BatchDataStream à l'attribut d'interface.
      2. Affectez à l'attribut de référence l'ID bean qui déclare le bean de flux de données par lots.
      3. Déclarez une propriété avec la clé xjcl:classname et une valeur correspondant à la classe Java qui implémente le flux de données par lots.
      4. Déclarez un bean pour la classe Java qui implémente le flux de données par lots.
      5. Affectez la valeur prototype à l'attribut de portée.

      Exemple de flux de données par lots :

      <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. Déclarez l'algorithme de stratégie de point de contrôle comme service Blueprint.

      Si votre application par lots OSGi implémente un algorithme de stratégie de point de contrôle, déclarez l'algorithme en tant que service Blueprint. Sinon, ignorez cette étape.

      1. Affectez la valeur com.ibm.wsspi.batch.CheckpointPolicyAlgorithm à l'attribut d'interface.
      2. Affectez à l'attribut de référence l'ID bean qui déclare le bean de point de contrôle.
      3. Déclarez une propriété avec la clé xjcl:classname et une valeur correspondant à la classe Java qui implémente l'algorithme de stratégie de point de contrôle.
      4. Déclarez un bean pour la classe Java qui implémente l'algorithme de stratégie de point de contrôle.
      5. Affectez la valeur prototype à l'attribut de portée.

      Exemple d'algorithme de stratégie de point de contrôle :

      <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. Déclarez l'algorithme de résultats comme service Blueprint.

      Si votre application par lots OSGi implémente un algorithme de résultats, déclarez l'algorithme en tant que service Blueprint. Sinon, ignorez cette étape.

      1. Affectez la valeur com.ibm.wsspi.batch.ResultsAlgorithm à l'attribut d'interface.
      2. Affectez à l'attribut de référence l'ID bean qui déclare le bean d'algorithme de résultats.
      3. Déclarez une propriété avec la clé xjcl:classname et une valeur correspondant à la classe Java qui implémente l'algorithme de résultats.
      4. Déclarez un bean pour la classe Java qui implémente l'algorithme de résultats.
      5. Affectez la valeur prototype à l'attribut de portée.

      Exemple d'algorithme de résultats :

      <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. Exportez l'application par lots OSGi comme archive EBA.
  4. Créez le code xJCL.
    Créez le code xJCL comme vous le feriez pour d'autres applications par lots, à quelques différences près :
    • Faites correspondre l'attribut de nom d'application sur l'étape de travail et le nom de l'actif déployé. L'actif déployé est une unité de composition.
    • Faites correspondre le sous-élément de nom de classe de l'étape et la propriété xjcl:classname du service d'étape.
      L'exemple suivant utilise la propriété xjcl:classname com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep à partir de l'exemple d'étape de lots transactionnelle indiqué précédemment dans cette procédure.
      <step id=”step1”>
      <classname> com.ibm.websphere.batch.samples.tests.steps.TestBatchJobStep</classname>
      </step>
  5. Déployez l'application par lots OSGi.

    Lisez la rubrique sur le déploiement d'une application OSGi en tant qu'application de niveau métier et suivez les étapes mentionnées.

Résultats

Vous avez intégré une application par lots OSGi, modifié le code XML Blueprint pour décrire les artefacts par lots en tant que services, et exporté l'application par lots OSGi en tant qu'archive EBA (Enterprise Bundle Archive). Ensuite, vous avez créé le code xJCL. Enfin, vous avez déployé l'application par lots OSGi.


Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tgrid_cgbatchosgi
Nom du fichier : tgrid_cgbatchosgi.html