Mam pewna wątpliwość jak powinno być obsłużone Exception powstające w trakcie transakcji UserTransaction tx przy wywołaniu metody interfejsowej EJB BMT. Teoretycznie powinno się przechwycić takie Exception i wywołać rollback dla transakcji. I tu widzę pewna komplikacje bo metoda tx.rollback() ma swoje Exceptions do obsłużenia. Co z nimi zrobić? Jeżeli wypadnie takie Exception to rollback się nie wykona więc po przechwyceniu tego Exception nie mogę drugi raz wpisać tx.rollback() (np. w obsłudze przechwyconego Exception). Ponowne wyrzucenie tego Exception po przechwyceniu też nic nie da. Transakcja nie zostanie zamknięta bo kontener tego nie zrobi. Co wpisać więc w obsłudze Exception metody rollback()?
0
0
rollback rzuca tylko RuntimeException, prawda? Jak poleci taki wyjatek, to i tak znaczy ze jest powazny blad systemowy i raczej nic z tym nie zrobisz. Olej te wyjatki.
0
No właśnie nie są to RuntimeExceptions tylko:
SecurityException - Thrown to indicate that the thread is not allowed to roll back the transaction.
IllegalStateException - Thrown if the current thread is not associated with a transaction. (można pominąć)
SystemException - Thrown if the transaction manager encounters an unexpected error condition.
Co tam wpisać?