> Tech > Transactions

Transactions

Tech - Par iTPro - Publié le 24 juin 2010
email

La JTA (Java Transaction API) offre le support sous-jacent de J2EE pour les transactions. Bien qu'une application puisse appeler des méthodes JTA directement, une application ITP classique utilise le support EJB plus commode pour les transactions déclaratives.
Toutes les formes d'EJB vous permettent de spécifier déclarativement (c'est-à -dire, à  l'extérieur du

code Java
d’EJB) deux choses : les niveaux d’isolation
des transactions et quand le
conteneur d’EJB doit commencer et
terminer les transactions. Pour cela,
vous allez indiquer le comportement
transactionnel des méthodes de chacun
des EJB. Le conteneur d’EJB fait les
appels JTA appropriés pour le compte
d’un EJB transactionnel, dispensant de
ce type de code applicatif. Certains
conteneurs d’EJB, dont WAS, offrent
aussi des options supplémentaires à 
l’appui des transactions, comme le
support intégré pour une simultanéité
de base de données « optimiste » avec
les EJB d’entité. De la sorte, les EJB
constituent le moyen le plus simple et
le plus fonctionnel de mise en oeuvre
des transactions ITP. Le moyen le plus
simple de mettre en oeuvre des transactions
pour une application ITP
consiste à  spécifier, pour une ou plusieurs
méthodes du stateful session
EJB principal, qu’une nouvelle transaction
a commencé quand la méthode
est appelée, et que la transaction est
engagée ou annulée quand la méthode
revient. Par exemple, un servlet frontal
d’application ou un code d’aide pourrait
appliquer la séquence suivante
d’appels de méthode au stateful session
EJB principal d’une application de
saisie de commandes :

curOrder.setCustomerName( customerName );
...
curOrder.addItem( itemId, qty );
curOrder.addItem( itemId, qty );
...
curOrder.commitOrder();

Les méthodes setXxxx et addXxxx
sont spécifiées comme non transactionnelles,
c’est-à -dire qu’elles ne
constituent ni le début ni la fin d’une
transaction. Chacune de ces méthodes
(dans cet exemple) change simplement
la valeur de variables de programme
dans le stateful session EJB. La
méthode commitOrder est déclarée
comme démarrant une transaction
quand elle est appelée et comme engageant
la transaction quand elle revient.
Le conteneur d’EJB procède aux appels
de méthodes JTA nécessaires pour
le compte du session EJB, de sorte que
le programmeur n’a pas besoin d’inclure
le moindre code d’implémentation.
Dans une application ITP classique,
les méthodes du stateful session
EJB (commitOrder dans l’exemple précédent)
appellent les méthodes de
divers EJB CMP pour mettre à  jour les
tables de base de données. Les
méthodes EJB CMP appropriées sont
déclarées pour participer dans une
transaction existante que l’appelant a
commencée. Dans ce mécanisme, les
mises à  jour de la base de données des EJB se produisent dans les transactions définies par le stateful
session EJB principal de l’application.
Important : alors que les transactions sont souvent vues
sous l’angle des mises à  jour de la base de données, elles peuvent
aussi couvrir d’autres types d’actions (comme envoyer
des messages). Le support de transactions EJB est conçu
pour ce domaine plus large également. A noter qu’on peut
aussi utiliser le support de transactions déclaratives avec un
stateful session EJB qui emploie JDO au lieu de EJB pour
l’accès à  la base de données.

Téléchargez gratuitement cette ressource

Guide PME : 5 leviers pour accélérer votre développement

Guide PME : 5 leviers pour accélérer votre développement

Grandir, se développer et piloter la croissance sont des enjeux majeurs pour les PME qui doivent sécuriser le quotidien pour s’engager vers demain. Découvrez, dans ce Guide infographique, les différents leviers qui vous permettront de consolider durablement votre développement.

Tech - Par iTPro - Publié le 24 juin 2010