id:shot6 さんの情報によると,JBoss はやはりロールバック時には Synchronization#beforeCompletion()
を呼び出していないとのこと.
WebLogic について調べてみたら,ドキュメントにこんな記述が.
- トランザクション マネージャがアプリケーション サーバにステータスおよび同期の情報を提供するためのインタフェースである
javax.transaction.Status
と javax.transaction.Synchronization
。これらのインタフェースは、トランザクション マネージャによってのみアクセスされ、アプリケーション プログラムの一部として使用することはできません。
...
マジですか? ちなみに 9.0 でも同じように書いてあったり.
ともあれ (JW),Hibernate Forums によると WebLogic でもロールバックでは Synchronization#beforeCompletion()
を呼ばないみたい.
そして WebSphere なんですが,こいつは JTA の拡張を提供するらしいんですが,その中に Synchronization
の拡張も含まれていて,その説明のところでロールバック時には beforeCompletion()
は呼び出されないと書いてありました.なので,JTA でも同じではないかと.
そんなわけで (どんなわけで?),主要なアプリケーションサーバは概ねロールバックで Synchronozation#beforeCompletion()
を呼び出さないと思われますので,S2 の JTA もそうしたいと思います.
IBM JDK 1.4.1 で S2AOP がうまく動かない件とあわせて明日の夜にリリースの予定ということで.
これで影響あるのが S2Hibernate と S2Cayenne です.これらをお使いの方はご注意ください.
S2Hibernate は id:kenichi_okazaki さんと対応方法について相談済みなので,早い段階で対応版がリリースされると思います.
id:aua4io さん,S2Cayenne の対応お願いします!!