デフォルトでは、CDI はコンテナ管理のトランザクションをサポートしていません。ただし、Seam 3 Persistence モジュールを使用すると、アプリケーションに CMT サポートを追加できます。
Seam Persistence のドキュメントはこちら -->リンク
まず、Seam Persistence jar をプロジェクトに追加します。
<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>
次に、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>
ドキュメントによると、EJB の場合と同様にマネージド Bean で @TransactionAttribute アノテーションを使用できるはずですが、それを機能させることができませんでした。ただし、代わりに、クラスまたはメソッドで@Transactionalアノテーションを使用できます。これは Seam Persistence と同等であり、正常に動作します。
お役に立てれば。ご不明な点がございましたら、お気軽にお問い合わせください。