Code source (JBoss) de l'annotation @ConcurrencyManagement :
Annotation @Lock
Code source (JBoss) de l'annotation @Lock :
Notes :
- Si l'annotation est appliquée au niveau de la classe alors toutes les méthodes de la classe vont avoir le type du lock choisi pour la classe.
- Si l'annotation est appliquée au niveau de la méthode alors celle ci va avoir son propre type de lock.
Annotation @AccessTimeout
Code source (JBoss) de l'annotation @AccessTimeout :
Cette annotation permet de specifier un temp maximal qu'un lock peut être conservé sur une méthode.
Si le lock n'est pas libéré avant ce temps, une exception sera levé et le lock sur la méthode sera déverrouillé.
Si l'annotation est appliquée au niveau de la classe alors toutes les méthodes de la classe vont hériter les configurations du timeout définies pour la classe.
Si l'annotation est appliquée au niveau de la méthode alors celle ci va avoir son propre configuration du timeout.
L'attribut value de l'annotation @AccessTimeout définit le temps du timeout.
La valeur "0" indique au container que les accès concurrents à la méthode sont interdits.
La valeur "-1" indique un timeout infini.
Une valeur inférieur à "-1" est invalide.
L'attribut unit de l'annotation @AccessTimeout définit l'unité du temps du timeout.
Code source (JBoss) de l'enum ConcurrencyManagementType :
Enum LockType
Code source (JBoss) de l'enum LockType :
Notes :
- Une fois le lock de type WRITE est obtenu, aucun accès à aucune des méthodes du singleton bean ne sera permis,
et cela jusqu'à ce que le lock soit libéré
(soit parce que l'exécution de la méthode est complétée ou un timeout est levé).
Exemple (1) : Gestion des accès concurrents par le container EJB
Exemple (2) : Gestion des accès concurrents par le code de la session bean