11.7.9. Gestion des erreurs de transactions JTA


11.7.9.1. Erreurs de transactions

Les erreurs de transactions sont difficiles à résoudre car souvent dépendantes du timing. Voici quelques erreurs courantes et quelques idées pour les résoudre.

Note

Ces recommandations ne s'appliquent pas aux erreurs heuristiques. Si vous rencontrez des erreurs heuristiques, voir Section 11.7.7, « Gérer un résultat heuristique dans une transaction » et contacter Red Hat Global Support Services pour obtenir une assistance.
La transaction a expiré mais le thread de logique commerciale ne s'en est pas aperçu.

Ce type d'erreur se manifeste souvent quand Hibernate n'est pas en mesure d'obtenir une connexion de base de données pour le chargement différé. Si cela survient fréquemment, vous pourrez augmenter la valeur du temps d'expiration. Voir Section 11.7.8.2, « Configurer le Transaction Manager (TM) (ou gestionnaire de transactions) ».

Si cela n'est pas possible, vous pourrez sans doute régler votre environnement extérieur pour aller plus vite, ou restructurer votre code pour être plus efficace. Contacter Red Hat Global Services si vous avez des problèmes avec le temps d'expiration.
La transaction exécute déjà sur un thread, ou reçoit une exception NotSupportedException

L'exception NotSupportedException indique habituellement que vous avez tenté d'insérer une transaction JTA, et que ce n'est pas pris en charge. Si vous n'étiez pas en train d'essayer d'insérer une transaction, il est probable qu'une autre transaction avait commencé dans une tâche de pool de threads, mais a terminé la tâche sans suspendre, ni mettre fin à la transaction.

Les application utilisent normalement UserTransaction , qui s'en occupe automatiquement. Si tel est le cas, il y a peut-être un problème dans le framework.
Si votre code utilise les méthodes TransactionManager ou Transactions directement, considérez le comportement suivant lors de la validation ou de l'annulation d'une transaction. Si votre code utilise les méthodes du TransactionManager pour contrôler vos transactions, la validation ou l'annulation d'une transaction dissociera la transaction du thread actuel. Toutefois, si votre code utilise les méthodes Transaction , la transaction peut ne pas être associée au thread en cours d'exécution, et il faudra la dissocier de son thread manuellement, avant de la retourner au pool de threads.
Vous n'êtes pas en mesure d'enlister une seconde ressource locale

Cette erreur a lieu si vous essayez d'enlister une seconde ressource non-XA dans une transaction. Si vous avez besoin de ressources multiples pour une transaction, elles doivent être XA.

Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat