30.01.2015 Views

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!