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
- 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
- L'utilisation de travaux (jobs) pour soumettre et gérer de manière asynchrone le travail à traiter
- 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
<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
- 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.
- 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.
- 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.