Cuando un método (transaccional) de un EJB llama a otro método (transaccional) de otro EJB, y se lanza una excepción en el segundo, pero atrapado en el primero, parece que la transacción se realiza automáticamente retrocedió cuando el segundo regresa, incluso si el primero lo atrapa, ¿es cierto? ¿Cómo puedo evitarlo?EJB: Evitar retrotracción de transacción
El escenario es el siguiente:
@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() }
}
Lo siento, lo siento, modifiqué la pregunta para señalar que está lanzando una excepción marcada, ¿la transacción se retrotrae también en este escenario? – edutesoy
No, no se debe revertir si la excepción es una excepción marcada. –
Si todo lo que sabe es que la Excepción está marcada, no puede decir si revertirá o no su transacción. Si se trata de '@ApplicationException (rollback = true)', podría deshacer su transacción. –