13.2.4 プログラムソースコードの移行

次に示すように運用手順を変更して移行してください。

インプロセストランザクションサービスを使用する場合,アウトプロセストランザクションサービスを使用していた場合と比べて,動作が異なります。発生条件に合致する場合,プログラムソースコードを変更する必要があります。

表13-5 プログラムソースコードの変更点

動作変更内容発生条件修正内容
SetRollbackOnly後のトランザクション決着時にbeforeCompletionが呼ばれません(アウトプロセストランザクションサービスを使用した場合は呼ばれます)。Stateful Session Beanを使用し,SessionSynchronizationを実装している場合SetRollbackOnly後のトランザクション決着時にbeforeCompletionが呼ばれることを期待しないプログラムに変更してください。
SetRollbackOnly後のトランザクション決着時にejbStoreが呼ばれません(アウトプロセストランザクションサービスを使用した場合は呼ばれます)。Entity Beanを使用している場合SetRollbackOnly後のトランザクション決着時にejbStoreが呼ばれることを期待しないプログラムに変更してください。
afterCompletionの引数(boolean commited)の決定方法は,アウトプロセストランザクションサービスの場合にはトップルートトランザクションの処理結果を反映していましたが,インプロセストランザクションサービスの場合には,該当するブランチと,サブオーディネートブランチの処理結果だけで決定されます。次の条件をすべて満たす場合
  • 複数のJ2EEサーバで,プロセス間をわたってトランザクショナルなEJB呼び出しを行う。
  • Stateful Session Beanを使用している。
  • SessionSynchronizationを実装している。
afterCompletionの引数の使い方として,トップルートトランザクションの決着結果を期待しないプログラムに変更してください。