Modèle de programmation à traitement intensif

Les applications à traitement intensif sont des applications qui effectuent des tâches de calcul intensif auxquelles le concept traditionnel de demande/réponse de Java™ Platform, Enterprise Edition (Java EE) ne convient pas.

Applications de calcul intensif

Un certain nombre de caractéristiques peuvent rendre ces applications inadaptées aux modèles de programmation Java EE standard :
  • La nécessité de soumettre et de démarrer le travail de manière asynchrone
  • La nécessité d'exécuter le travail pendant des périodes prolongées
  • Le besoin, pour les unités de travail, d'être visibles et gérables individuellement par les opérateurs et les administrateurs
Le modèle de programmation pour traitements intensifs offre un environnement qui répond à ces besoins. Le modèle de programmation pour traitements intensifs s'appuie sur deux concepts :
  1. L'utilisation de travaux (jobs) pour soumettre et gérer de manière asynchrone le travail à traiter
  2. Une extension mineure du modèle de programmation des beans asynchrones pour permettre le traitement du travail dont l'exécution s'étend sur de longues périodes.

Les sections suivantes fournissent des informations complémentaires sur les extensions apportées au modèle de programmation des beans asynchrones.

Bean de contrôleur

Le bean de contrôleur est un EJB de session sans état, défini dans le descripteur de déploiement de l'application de traitement intensif, qui permet à l'environnement d'exécution de contrôler les travaux de l'application. L'implémentation de ce bean de session sans état est fournie par le serveur d'applications. L'application inclut le bean de session sans état, dont la définition est présentée ci-après, dans le descripteur de déploiement de l'un de ses modules EJB. Un seul bean de contrôleur doit être défini pour chaque application à traitement intensif. Comme l'implémentation du bean de contrôleur est fournie dans l'environnement d'exécution du serveur d'applications, il n'est pas nécessaire de demander son déploiement au moment de déployer l'application de traitement intensif.
<session id="indiquer un nom approprié">
   <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>
   

Conditionnement (packaging) d'une application de traitement intensif

La logique d'une application de traitement intensif, avec un certain nombre d'objets CIWork plus les classes nécessaires à leur prise en charge, est empaquetée dans un module EJB qui est lui-même intégré dans un fichier EAR (Java EE application Enterprise Archive). Le descripteur de déploiement du module EJB doit contenir la définition du bean de session sans état décrit précédemment. Si l'application utilise elle-même d'autres beans enterprise ou d'autres ressources, les définitions correspondantes peuvent également se trouver dans le descripteur de déploiement. Vous pouvez utiliser des outils de développement Java EE, tels qu'IBM® Rational Application Developer pour développer et conditionner des applications de traitement intensif en procédant de la même manière que pour construire des applications Java EE contenant des modules de bean enterprise et des beans asynchrones. Vous pouvez également utiliser la tâche pgcpackager pour conditionner des applications de traitement intensif.

Cycle de vie d'une application de traitement intensif

Une application de traitement intensif est lancée par le serveur d'applications comme n'importe quelle autre application Java EE. Si l'application définit des beans de démarrage, ils sont exécutés au démarrage du serveur d'applications. Lorsqu'un travail destiné à l'application se présente, l'environnement de traitement intensif appelle le bean de session sans état CIControllerBean défini dans le descripteur de déploiement du module EJB de l'application. Le nom JNDI (Java Naming and Directory Interface) de ce bean de session sans état est indiqué dans la définition xJCL du travail. Pour chaque étape du travail, la bean session sans état CIControllerBean exécute les actions suivantes :
  1. Il instancie l'objet CIWork de l'application, spécifié par l'élément classname dans la définition xJCL de l'étape du travail, en utilisant le constructeur sans argument de la classe CIWork.
  2. Il appelle la méthode setProperties() de l'objet CIWork pour lui transmettre les propriétés spécifiées dans la définition xJCL de l'étape du travail.
  3. Il recherche le gestionnaire de tâches défini dans le descripteur de déploiement du module EJB et l'utilise pour appeler de manière asynchrone la méthode run() de l'objet CIWork.

Si le travail est annulé avant le retour de la méthode run(), CIControllerBean appelle la méthode release() de l'objet CIWork sur une unité d'exécution séparée. 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 retour rapide de la méthode run(). Le travail reste à l'état en attente d'annulation jusqu'au retour de la méthode run().

Si le travail n'est pas annulé et que la méthode run() effectue un retour sans renvoyer d'exception, cela signifie que le travail a été traité correctement. Si la méthode run() renvoie une exception, l'état du travail est échec de l'exécution. Après le retour normal ou avec une exception de la méthode run(), plus aucun appel à l'objet CIWork n'est effectué. Toutes les références à la méthode run() sont supprimées.

Etape des travaux à traitement intensif

A l'inverse des autres travaux par lots, les travaux à traitement intensif n'ont qu'une seule étape. Cette étape est représentée par une instance d'une classe qui implémente l'interface com.ibm.websphere.ci.CIWork. L'interface CIWork étend l'interface commonj.Work du modèle de programmation de beans asynchrones pour serveurs d'applications et Java Specification Request (JSR) 237. Ces extensions consistent en deux méthodes qui fournissent un moyen de passer à l'objet CIWork les propriétés spécifiques de chaque étape spécifiées dans le travail.

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

Pour en savoir plus sur les beans asynchrones, voir la rubrique concernant leur utilisation.


Icône indiquant le type de rubrique Rubrique de concept



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=cgrid_schintensve
Nom du fichier : cgrid_schintensve.html