このスニペットを見てください:
@Stateless
public class A {
@EJB
B b; // B is stateful EJB
b.init(); // initialize Sets and List that are used in doSthInB(C c)
public void doSthInA(){
for(C c){
b.doSthInB(c); // doSthInB use REQUIRES_NEW transaction type
}
}
}
私の意図は、タイプ C のオブジェクトのコレクションを処理することです。メソッド doSthInB はエンティティを変更し、メソッド呼び出しの最後に結果を保持する必要があります (そのため、REQUIRES_NEW を使用しています)。入力コレクションの一部の要素の処理中に何らかのエラーが発生した場合、この操作のみを永続化するべきではなく、ログに記録する必要があり、他の要素の処理を停止するべきではありません。
処理中に得られるものは次のとおりです。javax.ejb.EJBException: java.lang.IllegalStateException: Bean is associated with a different unfinished transaction
多分私の考えは間違っています。任意のヒント?