des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Enterprise <strong>beans</strong> et transactions<br />
est défini et qu’une transaction globale existe déjà, le conteneur<br />
invoque la méthode et joint la transaction globale existante. S’il n’existe<br />
aucune transaction globale, le conteneur démarre une transaction locale<br />
pour la méthode et la transaction se termine à la fin de la méthode.<br />
• NotSupported<br />
Permet également au bean d’éviter d’utiliser une transaction globale. Si<br />
un client appelle la méthode avec un contexte de transaction, le<br />
conteneur la suspend. A la fin de la méthode, la transaction globale<br />
reprend.<br />
• Mandatory<br />
Le client qui appelle une méthode avec cet attribut de transaction doit<br />
déjà être associé à une transaction. Sinon, le conteneur déclenche une<br />
javax.transaction.TransactionRequiredException. Cet attribut rend moins<br />
souple l’utilisation du bean puisqu’il part d’hypothèses sur la<br />
transaction de l’appelant.<br />
• Never<br />
Le client qui appelle une méthode avec cet attribut de transaction ne<br />
doit pas avoir de contexte de transaction. S’il en a un, le conteneur<br />
déclenche une exception.<br />
Transactions locales et globales<br />
Lorsqu’une seule connexion à une base de données existe, l’<strong>enterprise</strong><br />
bean peut contrôler directement la transaction en appelant commit() ou<br />
rollback() sur la connexion. Ce type de transaction est une transaction<br />
locale. Dans le cas <strong>des</strong> transactions globales, toutes les connexions à la<br />
base de données sont enregistrées avec le service de transaction globale<br />
qui gère la transaction. Pour une transaction globale, l’<strong>enterprise</strong> bean ne<br />
fait jamais d’appels directs à la connexion à une base de données<br />
elle-même.<br />
Un bean pratiquant la démarcation <strong>des</strong> transactions gérées par le bean<br />
utilise l’interface javax.transaction.UserTransaction pour identifier les<br />
limites d’une transaction globale. Quand un bean utilise la démarcation<br />
gérée par le conteneur, ce dernier interrompt chaque appel de client pour<br />
contrôler la démarcation de la transaction, en utilisant l’attribut de<br />
transaction défini dans le <strong>des</strong>cripteur de déploiement du bean par<br />
l’assembleur de l’application. L’attribut de transaction détermine<br />
également si la transaction est locale ou globale.<br />
Pour les transactions gérées par le conteneur, ce dernier suit certaines<br />
règles pour déterminer s’il doit faire une transaction locale ou globale.<br />
Généralement, un conteneur appelle la méthode dans une transaction<br />
locale après avoir vérifié qu’il n’existe pas déjà une transaction globale. Il<br />
vérifie également qu’on n’attend pas qu’il démarre une nouvelle<br />
Gestion <strong>des</strong> transactions 13-5