10.2.2. Seamトランザクションマネージャの設定
Seam はトランザクションでの開始、 コミット、 ロールバック、 同期などの動作にトランザクション管理の抽象化を提供します。 デフォルトでは Seam はコンテナ管理やプログラムでの EJB トランザクションを統合する JTA トランザクションコンポーネントを使用します。 Java EE 5 の環境で作業している場合は
components.xml に EJB 同期化コンポーネントをインストールしてください。
<transaction:ejb-transaction />
<transaction:ejb-transaction />
ただし、 EE 5 コンテナ以外で作業している場合は Seam が適切なトランザクション同期化メカニズムの自動検出を試行します。 Seam が正しいメカニズムを検出できない場合は、次のいずれかを設定する必要があるかもしれません。
javax.persistence.EntityTransactionインターフェースで JPA RESOURCE_LOCAL 管理のトランザクションを設定します。EntityTransactionはリクエスト値の適用フェーズの開始時にトランザクションを開始します。org.hibernate.Transactionインターフェースで Hibernate 管理のトランザクションを設定します。HibernateTransactionはリクエスト値の適用フェーズの開始時にトランザクションを開始します。org.springframework.transaction.PlatformTransactionManagerインターフェースで Spring 管理トランザクションを設定します。 Spring のPlatformTransactionManagementマネージャはuserConversationContext属性を設定するとリクエスト値の適用フェーズの開始時にトランザクションを開始することができます。- Seam 管理トランザクションを明示的に無効にします。
components.xml に次を追加して JPA RESOURCE_LOCAL トランザクション管理を設定します。 #{em} は persistence:managed-persistence-context コンポーネント名です。 管理永続コンテキスト名が entityManager なら entity-manager 属性を省略することができます (詳細は 「Seam 管理永続コンテキスト」 を参照)。
<transaction:entity-transaction entity-manager="#{em}"/>
<transaction:entity-transaction entity-manager="#{em}"/>
Hibernate 管理トランザクションを設定するには
components.xml で次を宣言します。#{hibernateSession} はプロジェクトの persistence:managed-hibernate-session コンポーネント名です。 管理 Hibernate セッション名が session なら session 属性を省略することができます (詳細は 「Seam 管理永続コンテキスト」を参照)。
<transaction:hibernate-transaction session="#{hibernateSession}"/>
<transaction:hibernate-transaction session="#{hibernateSession}"/>
Seam 管理トランザクションを明示的に無効にするには次を
components.xml で宣言します。
<transaction:no-transaction />
<transaction:no-transaction />
Spring 管理トランザクションの設定方法については 「Spring の PlatformTransactionManagement の使用」 を参照してください。