Il semble que vous soyez un peu confus. Généralement, les systèmes de base de données prennent en charge deux notions de types de transactions distribuées :
- Transactions distribuées natives et
- Transactions XA.
Les transactions distribuées natives se font généralement entre différents serveurs du même RDBMS. Postgres prend également en charge cela avec la commande dblink_exec. Généralement, la connexion à l'autre serveur est créée par un lien dit de base de données. Postgres est un peu plus maladroit à utiliser que d'autres RDBMS de qualité commerciale. Vous devez d'abord installer une extension pour pouvoir utiliser les liens de base de données. Cependant, le rdbms postgres gère la transaction.
Les transactions XA, d'autre part, sont gérées par le gestionnaire de transactions externe (TM) et chacune des bases de données participantes joue le rôle d'une ressource XA, qui s'inscrit auprès du gestionnaire de transactions. Le SGBDR ne peut plus décider lui-même quand valider une transaction. C'est la tâche du gestionnaire de transactions XA. Il utilise un protocole 2PC pour s'assurer que les modifications sont appliquées ou annulées de manière cohérente dans toutes les bases de données.
Sur certains systèmes d'exploitation comme Windows, un gestionnaire de transactions fait partie du système d'exploitation sur d'autres non. Généralement, Java est livré avec un gestionnaire de transactions et la source de données correspondante doit être configurée pour utiliser XA.