11.7.4. Transactions imbriquées

Les transactions imbriquées ne sont prises en charge que lorsque vous utilisez des transactions distribuées avec les API JTS. De plus, beaucoup de fournisseurs de base de données ne prennent pas en charge les transactions imbriquées, renseignez-vous donc auprès de votre fournisseur de base de données avant d'ajouter des transactions imbriquées à votre application.
Les spécifications OTS permettent un type limité de transactions imbriquées, où le protocole de validation de sous-transaction est le même que pour les transactions de niveau supérieur. Il existe deux phases : une phase prepare et une phase commit ou abort. Ce type de transaction imbriquée peut mener à des résultats incohérents, comme un coordinateur de sous-transaction en cours de validation qui découvre qu'une ressource ne peut être validée. Il se peut que le coordinateur ne puisse être capable de dire aux ressources validées de s'interrompre, causant ainsi un résultat heuristique. Cette transaction stricte imbriquée OTS est disponible via l'interface CosTransactions::SubtransactionAwareResource.
La mise en œuvre de JTS de JBoss EAP 6 prend en charge ce type de transaction imbriquée. Elle prend également en charge un type de transaction imbriquée avec un protocole de validation multiphase, évitant ainsi les problèmes que l'on peut rencontrer avec le modèle OTS strict. Ce type de transaction imbriquée est disponible via le ArjunaOTS::ArjunaSubtranAwareResource. Il est poussé par un protocole de validation à deux phases à chaque fois qu'une transaction imbriquée est validée.
Pour créer une transaction imbriquée, créer une nouvelle transaction à l'intérieur d'une transaction parente. Veuillez consulter Section 11.7.3, « Démarrer une transaction » pour plus d'informations sur la création d'une transaction.
L'effet d'une transaction imbriquée dépend de la validation/rollback de ses transactions intégrées. Ces effets sont annulés si la transaction intégrée s'interrompt, même si la transaction imbriquée a été validée.