Coordination de l'accès aux ressources de validation à une phase et à deux phases dans la même transaction
Celui-ci permet d'utiliser une seule ressource de validation à une phase avec n'importe quel nombre de ressources de validation à deux phases dans la même transaction globale. Plusieurs interactions peuvent impliquer la ressource de validation en une phase dans la même transaction, mais une seule ressource de ce type peut être impliquée.
Lors de la validation de la transaction, les ressources de validation à deux phases sont d'abord préparées à l'aide du protocole de validation à deux phases, puis, en cas de succès, la ressource de validation à une phase est appelée pour validation. Les ressources de validation à deux phases sont alors validées ou annulées selon la réaction de la ressource de validation à une phase.
- Dans le scénario principal, le processus serveur d'applications (serveur "racine de transaction"),
dans lequel la transaction démarre, accède au fournisseur de ressources de validation à une phase.
Dans ce scénario, le support du dernier participant peut coordonner une ressource de validation à une phase et un certain nombre de ressources de validation à deux phases dans la même transaction.
- Si le fournisseur de ressources de validation à une phase est contacté à partir d'un serveur d'applications (un serveur "secondaire de transactions") différent de celui qui a lancé la transaction ; exemple : par suite d'un appel transactionnel sur une interface EJB distante où l'implémentation EJB accède à un fournisseur de ressources de validation à une phase.
Dans ce scénario, la transaction ne peut être validée. Pour pouvoir valider (dans le cadre d'une transaction globale) une ressource de validation à une phase figurant sur un serveur secondaire de transactions, le service de transactions doit déléguer la responsabilité de la coordination du serveur racine de transaction au serveur secondaire. Ceci ne se produit que si aucune autre ressource n'a été enregistré auprès du serveur racine de transaction.
Le support du dernier participant augmente le risque de sortie heuristique dans la transaction. En fait, le gestionnaire de transactions ne peut pas être certain que les ressources ont toutes été soit terminées, soit validées. Pour cette raison, afin qu'une application puisse coordonner l'accès aux ressources à validation en une et deux phases dans une même transaction, vous devez configurer l'application de sorte qu'elle accepte le risque accru de sortie heuristique.
Une sortie heuristique survient si le service des transactions (JTS) ne reçoit aucune réponse du flux de validations à une phase sur la ressource à une phase. Dans ce cas, le service de transactions ne peut pas déterminer si les modifications apportées à la ressource à une phase ont été validées ou annulées et ne peut donc pas piloter de manière fiable la sortie correcte de la transaction globale sur les autres ressources à deux phases.
Vous pouvez configurer le service de transaction d'un serveur d'applications de manière à accepter le danger heuristique, ou configurer les applications individuellement pour accepter les risques heuristiques. Vous pouvez configurer les applications individuellement lorsqu'elles sont assemblées ou après leur déploiement.
- Si la ressource à validation en une phase a reçu un ordre de validation, une sortie heuristique est enregistrée dans le journal des activités.
- Si la ressource à validation en une phase n'a pas reçu d'ordre de validation, la transaction est annulée de manière cohérente.
Exceptions de transaction impliquant des ressources de validation à une et deux phases
Les exceptions pouvant être générées par des transactions faisant appel à des ressources de validation à une et deux phases sont les mêmes que celles qui peuvent être générées par des transactions ne faisant appel qu'à des ressources de validation à deux phases.
Les exceptions pouvant se produire sont répertoriées dans les informations de référence de l'API qui se trouvent dans le centre de documentation WebSphere Application Server.