Support de transactions dans WebSphere Application Server
Cette rubrique décrit la prise en charge des transactions fournie par le service de transaction de WebSphere Application Server. La manière dont les applications utilisent les transactions varie en fonction du type de composant d'application.
Une transaction est une unité d'activité dans laquelle plusieurs mises à jour de ressources peuvent être atomiques (définies comme unités de travail individuelles), de sorte que toutes les mises à jour, ou aucune, sont permanentes. Par exemple,pendant le traitement d'une instruction SQL COMMIT, le gestionnaire de la base valide atomiquement plusieurs instructions SQL dans une base de données relationnelle. En pareil cas, la transaction figure entièrement dans le gestionnaire de base de données et peut être considérée comme une transaction locale du gestionnaire de ressources (RMLT). Dans certains contextes, une transaction est qualifiée d'unité logique de travail (LUW). Si une transaction inclut plusieurs gestionnaires de ressources (par exemple, plusieurs gestionnaires de base de données), un gestionnaire externe de transactions est requis pour les coordonner. Une transaction portant sur plusieurs gestionnaires de ressources est qualifiée de transaction globale. WebSphere Application Server est un gestionnaire de transactions pouvant coordonner des transactions globales, prendre part à une transaction globale reçue et fournir un environnement dans lequel des transactions locales d'un gestionnaire de ressources peuvent être exécutées.
- Un bean session peut utiliser des transactions gérées par conteneur (le bean délègue la gestion des transactions au conteneur) ou des transactions gérées par bean (transactions gérées par composant et dans lesquelles le bean gère lui-même les transactions).
- Les beans entity utilisent les transactions gérées par conteneur.
- Les composants Web (servlets) et les composants de clients d'applications utilisent des transactions gérées par composant.
WebSphere Application Server est un gestionnaire de transactions qui prend en charge la coordination des gestionnaires de ressources via leur interface XAResource, et participe à des transactions globales distribuées avec des gestionnaires de transaction qui prennent en charge le protocole OTS (Object Transaction Service) CORBA ou le protocole WS-AtomicTransaction (Web Service Atomic Transaction). WebSphere Application Server prend également part à des transactions importées via des adaptateurs de ressources Java™ EE Connector 1.5. Vous pouvez également configurer les applications WebSphere de manière à interagir avec les bases de données, avec les files d'attente JMS et les connecteurs JCA grâce à leur prise en charge de la transaction locale, lorsque la coordination de la transaction distribuée n'est pas nécessaire.
Outre la prise en charge de la coordination de gestionnaires de ressources
basés XAResource, WebSphere
Application Server pour
z/OS prend en charge
celle de gestionnaires de ressources via RRS (services de reprise de ressources
z/OS). Les gestionnaires de
ressources compatibles RRS sont DB2, WebSphere MQ, IMS et CICS. IBM®
WebSphere
Application Server pour
z/OS peut
coordonner une combinaison de gestionnaires de ressources RRSTransactional et de gestionnaires de
ressources compatibles XA dans la même transaction globale.
Les gestionnaires de ressources prenant en charge les transactions peuvent
être classés en deux catégories : ceux qui assurent une coordination en deux phases (avec une
interface XAResource ou le support de RRS) et ceux qui assurent une coordination en une seule
phase (par exemple avec une interface LocalTransaction). Le support de transactions
WebSphere
Application Server permet la coordination,
dans le contexte d'une transaction, de n'importe quel nombre de gestionnaires
de ressources disposant d'une capacité de validation en deux phases. Elle permet également l'utilisation d'un seul
gestionnaire de ressources disposant d'une capacité de validation à phase unique dans le contexte d'une transaction en
l'absence de tout autre gestionnaire de ressources, bien qu'une transaction WebSphere ne soit pas requise
dans ce cas.
Les gestionnaires de ressources prenant en charge les transactions peuvent être classés
en deux catégories : ceux qui assurent une coordination en deux phases (avec une interface
XAResource) et ceux qui assurent une coordination en une seule phase (par exemple avec une
interface LocalTransaction).
Le support de transactions
WebSphere
Application Server permet la coordination,
dans le contexte d'une transaction, de n'importe quel nombre de gestionnaires
de ressources disposant d'une capacité de validation en deux phases. Elle permet également l'utilisation d'un seul
gestionnaire de ressources disposant d'une capacité de validation à phase unique dans le contexte d'une transaction en
l'absence de tout autre gestionnaire de ressources, bien qu'une transaction WebSphere ne soit pas requise
dans ce cas.
- Dans les scénarios où un seul fournisseur de ressources de validation à une phase participe à la transaction et où tous les fournisseurs de ressources de validation à deux phases qui participent à la transaction sont utilisés en mode lecture seule. Dans ce cas, les ressources de validation à deux phases sont toutes en lecture seule lors de la phase de préparation de la validation à deux phases. Etant donné que le fournisseur de ressources de validation à une phase est le seul fournisseur qui effectue des mises à jour, la ressource de validation à une phase n'a pas besoin d'être préparée.
- Lorsqu'un seul fournisseur de ressources de validation à une phase participe à la transaction avec un ou plusieurs fournisseurs de ressources de validation à deux phases et que la support du dernier participant est activé. Celui-ci permet d'utiliser une seule ressource de validation à une phase avec n'importe quel nombre de ressources de validation à deux phases dans la même transaction globale. Pour en savoir plus sur le support du dernier participant, voir Utilisation de ressources de validation à une phase et deux phases dans la même transaction.
Le service ActivitySession offre une autre portée d'unité de travail (UOW) que celle fournie par les contextes de transactions globales. Il s'agit d'un contexte réparti pouvant être utilisé pour coordonner plusieurs gestionnaires de ressources à phase unique. Le conteneur d'EJB et les outils de déploiement d'EJB WebSphere prennent en charge le service ActivitySession en tant qu'extension du modèle de programmation Java EE. Les beans enterprise peuvent être déployés avec des cycles de vie influencés par le contexte ActivitySession, comme alternative au contexte de transaction. Une application peut alors interagir avec un gestionnaire de ressources pour la durée d'un service ActivitySession orienté client, et non seulement pour la durée d'une méthode EJB. En outre, le résultat de la transaction locale du gestionnaire de ressources peut être acheminé par la session ActivitySession. Pour plus d'informations sur ce service, voir Utilisation du service ActivitySession.
Vous pouvez utiliser les classes de transaction pour
classer la charge de travail des clients en vue de la gestion de la charge de travail. La charge de travail correspond à différentes transactions WebSphere ciblées sur
des régions servantes, chacune ayant des objectifs définis par des classes de service appropriées.
Chaque transaction est distribuée dans sa propre enclave WLM dans
un processus de région serviteur et est gérée en fonction des objectifs de sa classe de
service. Le contrôleur du serveur, que la gestion de la charge de travail considère
comme un gestionnaire de files d'attente, utilise l'enclave associée à une demande client
pour gérer la priorité du travail. Si la priorité du travail est élevée, le système de
gestion de la charge de travail peut l'acheminer vers un servant à priorité élevée du
serveur. Si la priorité du travail est faible, le système de pondération
de charge de travail peut l'acheminer vers un servant à faible priorité. L'objectif
consiste à répartir les travaux en fonction de leur priorité sur un même serveur.