@TransactionManagement
.
Exemple 71. Annotation sur un EJB en mode container managed transaction
@Stateless(mappedName="MarinService") @Remote(MarinService.class) @TransactionManagement(TransactionManagementType.CONTAINER) public class MarinServiceImpl implements MarinService { // reste de la classe }
@TransactionAttribute
. Elle ne prend qu'un seul attribut, de type
TransactionAttributeType
. Cette énumération peut prendre les valeurs suivantes :
MANDATORY
,
NEVER
,
NOT_SUPPORTED
,
REQUIRED
,
REQUIRES_NEW
et
SUPPORTS
.
Annoter une méthode de cette façon a trois conséquences.
T1
représente la transaction dans laquelle se trouve le client, si elle existe.
T2
représente une nouvelle transaction, créée par le serveur d'application pour l'exécution de la méthode métier appelée.
Tableau 1. Valeurs de l'attribut de
@TransactionAttribute
Valeur de l'attribut | Transaction dans laquelle se trouve le client | Transaction dans laquelle se trouve la méthode métier | Transaction enregistrée auprès du resource manager |
---|---|---|---|
NOT_SUPPORTED | pas de transaction | aucune |
null
|
NOT_SUPPORTED |
T1
|
aucune |
null
|
REQUIRED | pas de transaction |
T2
|
T2
|
REQUIRED |
T1
|
T1
|
T1
|
SUPPORTS | pas de transaction | aucune |
null
|
SUPPORTS |
T1
|
T1
|
T1
|
REQUIRES_NEW | pas de transaction |
T2
|
T2
|
REQUIRES_NEW |
T1
|
T2
|
T2
|
MANDATORY | pas de transaction | ERREUR | - |
MANDATORY |
T1
|
T1
|
T1
|
NEVER | pas de transaction | aucune |
null
|
NEVER |
T1
|
ERREUR | - |