Khi phương thức (giao dịch) của EJB gọi phương thức khác (giao dịch) của EJB khác và ngoại lệ được ném vào thứ hai, nhưng bị bắt trong trường hợp thứ nhất, có vẻ như giao dịch tự động quay trở lại khi thứ hai trở lại, ngay cả khi người đầu tiên bắt nó, điều này có đúng không? làm thế nào tôi có thể tránh nó?EJB: Tránh quay lại giao dịch
Kịch bản là một sau:
@Stateless
class ClassA {
@EJB
ClassB objectB;
methodA() {
try {
objectB.methodB();
}
catch(Exception e) {
//Here the transaction started in this method is
//automatically rolled back. Is this avoidable?
}
}
}
@Stateless
class ClassB {
methodB() throws Exception { throw new Exception() }
}
Rất tiếc, tôi đã sửa đổi câu hỏi cần lưu ý rằng nó đang ném ngoại lệ đã kiểm tra, giao dịch có được quay lại trong trường hợp này không? – edutesoy
Không, không nên quay lại nếu ngoại lệ là ngoại lệ được kiểm tra. –
Nếu tất cả những gì bạn biết là ngoại lệ được kiểm tra, bạn không thể nói nếu nó sẽ hoặc sẽ không quay trở lại giao dịch của bạn. Nếu đó là '@ApplicationException (rollback = true)', nó có thể khôi phục lại giao dịch của bạn. –