Par défaut, le CDI ne prend pas en charge les transactions gérées par des conteneurs. Cependant, en utilisant le module Seam 3 Persistence, vous pouvez ajouter le support CMT à votre application.
La documentation Seam La persistance est ici ->Link
Tout d'abord, ajoutez les pots Seam Persistence à votre projet:
<dependency>
<groupId>org.jboss.seam.persistence</groupId>
<artifactId>seam-persistence-api</artifactId>
<version>${seam.persistence.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.seam.persistence</groupId>
<artifactId>seam-persistence-impl</artifactId>
<version>${seam.persistence.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.seam.solder</groupId>
<artifactId>seam-solder</artifactId>
<version>${seam.solder.version}</version>
</dependency>
Ensuite, activez la gestion déclarative des transactions dans votre beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://docs.jboss.org/cdi/beans_1_0.xsd">
<interceptors>
<class>org.jboss.seam.persistence.transaction.TransactionInterceptor</class>
</interceptors>
</beans>
Maintenant, selon la documentation, vous devriez pouvoir utiliser le @TransactionA Attribuez des annotations avec votre bean géré comme vous le feriez avec un EJB, cependant, je ne pouvais pas le faire fonctionner. Au lieu de cela, cependant, vous pouvez utiliser l'annotation @Transactional sur votre classe ou méthode. C'est l'équivalent Seam Persistence et fonctionne bien.
Espérons que cela aide. Des questions, il suffit de demander.