J'ai été troublé par le fait que nous pouvons autoriser l'utilisation de transactions JTA avec une source de données non XA. Lien vers la documentation . Quelle est donc la différence entre les sources de données XA/non-XA? Pourquoi devrions-nous utiliser des sources de données XA?
Une transaction XA, dans les termes les plus généraux, est une "transaction globale" qui peut s'étendre sur plusieurs ressources. Une transaction non XA implique toujours une seule ressource.
Une transaction XA implique un gestionnaire de transactions de coordination, avec une ou plusieurs bases de données (ou d'autres ressources, comme JMS) toutes impliquées dans une seule transaction globale. Les transactions non XA n'ont pas de coordinateur de transactions, et une seule ressource effectue elle-même tout son travail de transaction (ce qu'on appelle parfois des transactions locales).
jta = "true", la transaction est validée automatiquement.
Je me posais des questions à ce sujet moi-même (option "utiliser JTA" dans une source de données non XA), j'ai donc testé plusieurs configurations. J'ai une transaction distribuée connectée à deux serveurs MySQL.
Voici mes résultats. Si j'ai:
Résultat: Erreur "Impossible de s'inscrire dans la transaction lors de la saisie d'un objet sensible aux métadonnées."
Résultat: ils ne participeront pas à la transaction distribuée. Chacun s'engagera séparément.
Résultat: identique à # 2
Résultat: ça marche!
De ceux-ci, il semble que l'option "utiliser JTA" indique si elle participera à une transaction distribuée s'il existe une source de données XA.