WebSphere Extended Deployment, Version 6.0.x     Systèmes d'exploitation : AIX, HP-UX, Linux, Solaris, Windows, z/OS

Modèle de programmation des applications à traitement lourd

Les applications à traitement lourd sont des applications qui effectuent des tâches lourdes auxquelles le concept traditionnel "demande/réponse" de J2EE n'apporte pas toujours la réponse appropriée.

Un certain nombre de caractéristiques peuvent rendre ces applications inadaptées aux modèles de programmation J2EE standard :
Le modèle de programmation pour traitements lourds de WebSphere Extended Deployment offre un environnement qui répond à ces besoins. Le modèle de programmation pour traitements lourds s'appuie sur deux concepts :
  1. L'utilisation de travaux pour soumettre ou gérer des tâches en mode asynchrone.
  2. Une extension mineure du modèle de programmation par beans asynchrones pour prendre en charge les tâches qui s'exécutent pendant une période prolongée.

Le concept de travail est partagé par toutes les applications à exécution longue et est décrit dans une autre section. Les sections suivantes fournissent des informations complémentaires sur les extensions apportées au modèle de programmation par beans asynchrones.

Etapes des travaux à traitement lourd

A l'instar des travaux à exécution longue, les travaux à traitements lourds se composent de plusieurs étapes. Dans le cas des travaux à traitement lourd, chaque étape est représentée par l'instance d'une classe qui implémente l'interface com.ibm.websphere.ci.CIWork. L'interface CIWork étend l'interface de tâche commonj.Work du modèle de programmation des beans asynchrones WebSphere et de JSR 237. Ces extensions se composent de deux méthodes qui permettent de transmettre à l'objet CIWork les propriétés de chaque étape du travail.

Pour plus d'informations, reportez-vous à la documentation de l'API.

Pour plus d'informations sur les beans asynchrones, reportez-vous à la section Utilisation de beans asynchrones dans le centre de documentation de WebSphere Application Server.

Bean contrôleur

Le bean contrôleur est un bean session sans état défini dans le descripteur de déploiement de l'application à traitement lourd qui permet à l'environnement d'exécution de contrôler les travaux de l'application. L'implémentation de ce bean session sans état est fournie par WebSphere. L'application doit uniquement inclure le bean session sans état dans la définition ci-après, au sein du descripteur de déploiement de l'un de ses modules de beans enterprise. Un seul bean contrôleur doit être défini pour chaque application à traitement lourd. L'implémentation du bean contrôleur étant assurée dans l'environnement d'exécution de WebSphere, les déployeurs d'applications ne doivent pas demander le déploiement de beans entreprise pendant le déploiement des applications à traitement lourd.
<session id="supply a suitable name here">
   <ejb-name>CIController</ejb-name>
   <home>com.ibm.ws.ci.CIControllerHome</home>
   <remote>com.ibm.ws.ci.CIController</remote>
   <ejb-class>com.ibm.ws.ci.CIControllerBean</ejb-class>
   <session-type>Stateless</session-type>
   <transaction-type>Bean</transaction-type>
   <resource-ref id="WorkManager_ResourceRef">
      <description>
         Gestionnaire de tâches utilisé pour exécuter les travaux.
      
      <res-ref-name>wm/CIWorkManager</res-ref-name>
      <res-type>commonj.work.WorkManager</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
   

Intégration d'une application à traitement lourd

La logique d'une application à traitement lourd (série d'objets CIWork et classes prenant en charge ces objets CIWork) est intégrée dans un module de bean enterprise dans un fichier EAR de l'application J2EE. Le descripteur de déploiement du module de bean enterprise doit comporter la définition du bean session sans état, comme indiqué ci-dessus. Si l'application utilise elle-même d'autres beans enterprise ou d'autres ressources, les définitions correspondantes peuvent également apparaître dans le descripteur de déploiement. Des outils de développement J2EE, tels qu'IBM Rational Application Developer, peuvent être utilisés pour développer et intégrer des applications à traitement lourd comme pour construire des applications J2EE contenant des modules de beans enterprise et des beans asynchrones.

Cycle de vie d'une application à traitement lourd

Une application à traitement lourd est lancée par un serveur d'applications comme n'importe quelle autre application J2EE. Si l'application définit des beans de démarrage, ceux-ci sont exécutés au démarrage du serveur d'applications. Lorsqu'un travail destiné à l'application se présente, l'environnement d'exécution des traitements lourds (LREE.ear) appelle le bean session sans état CIControllerBean défini dans le descripteur de déploiement du module d'EJB de l'application. Le nom JNDI de ce bean session sans état est indiqué dans la définition xJCL du travail. Pour chaque étape du travail, le bean CIControllerBean :
  1. Instancie l'objet CIWork de l'application indiqué par l'élément classname dans la définition xJCL de l'étape du travail à l'aide du constructeur no-argument de la classe CIWork.
  2. Appelle la méthode setProperties() de l'objet CIWork pour transmettre les propriétés indiquées dans la définition xJCL de l'étape du travail.
  3. Recherche le gestionnaire de tâches défini dans le descripteur de déploiement du module de bean enterprise et l'utilise pour appeler en mode asynchrone la méthode run() de l'objet CIWork.

Si le travail est annulé avant le renvoi de la méthode run(), le bean CIControllerBean appelle la méthode release() de l'objet CIWork dans une unité d'exécution distincte. Il revient au développeur de l'application à exécution longue de définir la logique de la méthode release() de manière à obtenir un renvoi rapide de la méthode run(). Le travail reste à l'état en attente d'annulation jusqu'au renvoi de la méthode run().

Si le travail est annulé et que la méthode run() renvoie des données sans générer d'exception, on considère que le travail s'est exécuté correctement. Si la méthode run() génère une exception, le travail est associé à la mention échec de l'exécution. A l'issue du renvoi de la méthode run() (procédure normale ou génération d'une exception), aucun autre appel à l'objet CIWork n'est effectué et toutes les références associées sont supprimées.




Related concepts
Développement des applications à exécution longue

Rubrique Concept    

Conditions d'utilisation | Commentaires Dernière mise à jour le : Mar 16, 2006 9:58:13 AM EST
http://publib.boulder.ibm.com/infocenter/wxdinfo/v6r0/index.jsp?topic=?topic=/com.ibm.websphere.xd.doc/info/scheduler/cschintensve.html

© Copyright IBM 2005, 2006. All Rights Reserved.
Ce centre de documentation s'appuie sur la technologie Eclipse. (http://www.eclipse.org)