des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Utilisation de l’ API de transaction<br />
transaction globale et que les attributs de transaction sont définis pour les<br />
transactions gérées par le conteneur. Le conteneur enveloppe<br />
automatiquement un appel de méthode à l’intérieur d’une transaction<br />
locale si une <strong>des</strong> conditions suivantes est vrai :<br />
• L’attribut de transaction est défini par NotSupported et le conteneur<br />
détecte que les ressources de bases de données ont été accédées.<br />
• L’attribut de transaction est défini par Supports et le conteneur détecte<br />
que la méthode n’a pas été invoquée depuis l’intérieur d’une<br />
transaction globale.<br />
• L’attribut de transaction est défini par Never et le conteneur détecte<br />
que les ressources de bases de données ont été accédées.<br />
Utilisation de l’API de transaction<br />
Toutes les transactions utilisent l’API JTA (Java Transaction API). Lorsque<br />
les transactions sont gérées par le conteneur, la plate-forme gère la<br />
démarcation <strong>des</strong> transactions et le conteneur utilise l’API JTA. Vous<br />
n’avez jamais besoin d’utiliser cette API dans le code de votre bean.<br />
Si votre bean gère lui-même ses transactions, il doit utiliser l’interface JTA<br />
javax.transaction.UserTransaction. Cette interface permet à un client ou à<br />
un composant de démarquer les limites <strong>des</strong> transactions. Les <strong>enterprise</strong><br />
<strong>beans</strong> dont les transactions sont gérées par le bean utilisent la méthode<br />
EJBContext.getUserTransaction().<br />
De plus, tous les clients transactionnels utilisent JNDI pour consulter<br />
l’interface UserTransaction. Vous faites cela en construisant un<br />
InitialContext JNDI à l’aide du service d’annuaire JNDI, comme indiqué<br />
ici :<br />
javax.naming.Context context = new javax.naming.InitialContext();<br />
Une fois que le bean a obtenu l’objet InitialContext, il peut utiliser<br />
l’opération JNDI lookup() pour obtenir l’interface UserTransaction :<br />
javax.transaction.UserTransaction utx = (javax.transaction.UserTransaction)<br />
context.lookup("java:comp/UserTransaction")<br />
Notez qu’un <strong>enterprise</strong> bean peut obtenir une référence à l’interface<br />
UserTransaction depuis l’objet EJBContext. Le bean peut simplement utiliser<br />
la méthode EJBContext.getUserTransaction() au lieu de chercher à obtenir<br />
un objet InitialContext et d’utiliser ensuite la méthode JNDI lookup().<br />
Mais, si le client transactionnel n’est pas un <strong>enterprise</strong> bean, il doit utiliser<br />
l’approche de recherche JNDI.<br />
Quand le bean ou le client détient la référence à l’interface UserTransaction,<br />
il peut alors initier et gérer ses propres transactions. C’est-à-dire que vous<br />
pouvez utiliser les métho<strong>des</strong> de l’interface UserTransaction pour<br />
commencer et valider (ou annuler) <strong>des</strong> transactions. Vous utilisez la<br />
13-6 Guide du dé veloppeur Enterprise JavaBeans