[Seasar-user:20194] Re: S2Txでコミット後に処理を行いたい
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 9月 28日 (火) 01:00:00 JST
小林 (koichik) です.
Date: Tue, 28 Sep 2010 00:18:29 +0900
From: ちょま吉 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20192] S2Txでコミット後に処理を行いたい
> ファイルの削除処理をDBのトランザクションがコミットされた後に行いたいと考
> えているのですが、コミット処理の結果を受けて動くコードを挿入する方法は
> ないのでしょうか。
Synchronization インタフェースの実装クラスを
TransactionSynchronizationRegistry に
登録すれば可能です.
http://download-llnw.oracle.com/javaee/6/api/javax/transaction/Synchronization.html
http://download-llnw.oracle.com/javaee/6/api/javax/transaction/TransactionSynchronizationRegistry.html
TransactionSynchronizationRegistry は
public フィールドか setter メソッドを
用意すれば Seasar2 によって DI されます.
public TransactionSynchronizationRegistry tsr;
tsr.registerInterposedSynchronization(new Synchronization() {
@Override
public void beforeCompletion() {
//コミット前の処理
}
@Override
public afterCompletion(int status) {
if (status == Status.STATUS_COMMITTED) {
//コミット後の処理
} else {
ロールバック後の処理
}
}
});
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
<property name="twitter">"http://twitter.com/koichik"</property>
</component>
Seasar-user メーリングリストの案内