EJB Bean связан с другой незаконченной транзакцией
Пожалуйста, посмотрите на этот фрагмент:
@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
Может быть, моя идея неверна. Какие-нибудь советы?
1 ответ
Я вижу, что вы вводите Stateful в bean без гражданства. Несмотря на то, что это допускается спецификацией, в большинстве случаев это ошибка.
Я не знаю, полностью ли вы знаете, что подразумевает это дизайнерское решение. Если нет, постарайтесь не использовать этот подход. Я думаю, что это, вероятно, причина вашего исключения.