Blocages de bases de données engendrés par les mises à jour de verrous

Pour éviter les blocages de base de données engendrés par les mises à niveau de verrous, vous devez modifier la règle de tentative d'accès pour les beans entity (en la faisant passer de la valeur par défaut wsPessimisticUpdate-WeakestLockAtLoad à wsPessimisticUpdate ou en optant pour le verrouillage optimiste).

Lors d'accès concurrents à des données, assurez-vous que l'application est préparée au verrouillage de base de données nécessaire pour sécuriser l'intégrité des données.

Si un bean entity effectue une opération findByPrimaryKey (qui par défaut obtient un verrou Read sur la base de données) et s'il est mis à jour dans la même transaction, une mise à niveau du verrou sur Exclusive survient.

Si ce scénario se produit sur plusieurs unités d'exécution concurremment, un blocage peut se produire. Cela est dû au fait que plusieurs verrous en lecture puissent être obtenus en même temps, mais qu'un verrou exclusif ne puisse être obtenu que lorsque les autres verrous sont supprimés. Du fait que toutes les transactions tentent de mettre le verrou à jour dans ce scénario, le verrou exclusif ne peut pas être obtenu.

Pour y remédier, vous pouvez modifier la règle de tentative d'accès du bean entity en passant de la méthode wsPessimisticUpdate-WeakestLockAtLoad (valeur par défaut) à la méthode wsPessimisticUpdate. Cette modification permet à l'application d'informer le produit et la base de données que la transaction a mis à jour le bean enterprise. Le verrou Update est obtenu immédiatement sur la méthode findByPrimaryKey. Cela évite la mise à niveau du verrou lors de la mise à jour ultérieure.

La technique favorite employée pour la définition de règles de tentatives d'accès consiste à modifier la tentative d'accès à l'échelle du bean entity. Vous pouvez modifier la tentative d'accès de la méthode findByPrimaryKey, mais cela était déconseillé dans la version 6. Vous pouvez choisir de modifier la tentative d'accès d'une méthode individuelle si, par exemple, le bean entity est impliqué dans certaines transactions en lecture seule.

Une autre technique consiste à utiliser une approche optimiste, dans laquelle la méthode findByPrimaryKey ne gère pas de verrou en lecture, ce qui exclut une mise à niveau de verrou. Cependant, ceci nécessite que l'application est codée pour gérer les éventuelles annulations. Le verrouillage optimiste est destiné aux applications qui ne prévoient pas des conflits de bases de données réguliers.

Pour modifier la règle de tentative d'accès d'un bean entity, vous pouvez employer l'outil d'assemblage pour définir le niveau bean, comme cela est décrit dans Application de règles d'intention d'accès à des beans.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_ailu
Nom du fichier : cejb_ailu.html