Quando un metodo (transazionale) di un EJB chiama un altro metodo (transazionale) di un altro EJB e un'eccezione viene lanciata nel secondo, ma viene rilevata nella prima, sembra che la transazione sia automaticamente tirato indietro quando ritorna il secondo, anche se il primo lo prende, è vero? come posso evitarlo?EJB: Evita il rollback delle transazioni
Lo scenario è la seguente:
@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() }
}
Il mio male, mi dispiace, ho modificato la questione notare che sta gettando un eccezione controllata, è la transazione rollback anche in questo scenario? – edutesoy
No, non dovrebbe essere ripristinato se l'eccezione è un'eccezione controllata. –
Se tutto ciò che sai è che l'Eccezione è selezionata, non puoi dire se ripristinerà o meno la tua transazione. Se è '@ApplicationException (rollback = true)' potrebbe eseguire il rollback della transazione. –