I call account EJB method in JSF bean like that :
try{
account.someFunction(...);
}catch(SimRuntimeException e){
logger.log(Level.FATAL, "SimRuntimeException catched !");
}catch(SimNotRuntimeException e){
logger.log(Level.FATAL, "SimNotRuntimeException catched !");
}catch(Exception e){
logger.log(Level.FATAL, "Exception catched !");
}
My Exceptions :
public class SimRuntimeException extends RuntimeException {
public SimRuntimeException() {
super();
}
}
@ApplicationException(rollback=true)
public class SimNotRuntimeException extends Exception {
public SimNotRuntimeException() {
super();
}
}
- when
account.someFunction(...);throwsSimRuntimeExceptionI fall intoExceptionblock because mySimRuntimeExceptionis wrapped intoEJBExceptionprobably by EJB container. - when
account.someFunction(...);throwsSimNotRuntimeExceptionI fall as expected intoSimNotRuntimeException
So, what is concretely the difference between Exception with @ApplicationException(rollback=true) and RuntimeException please ?
ExceptionandRuntimeException, and that question contains a well explained answer.@ApplicationException(rollback=true)to automatcally rollback transaction and RuntimeException which will rollback transaction too but will encapsulate this exception into EJBExceptionrollback=trueis just a property if you want to rollback any open transaction in case this exception is raised.SimRuntimeExceptionisRuntimeExceptionthat it's encapsulated intoEJBException?