ApplicationException, завернутый в EJBTransactionRolledBackException? - PullRequest
0 голосов
/ 06 января 2012

Я использую JSF 2 и EJB 3.

Мне кажется, мой вариант использования довольно прост:

Бэк JSF-компонента вызывает метод для введенного ejb.EJB может выдать пользовательское исключение.Когда возникает исключение, я хочу, чтобы транзакция была откатана И исключение было перехвачено в моем компоненте JSF (чтобы он мог работать с пользователем).

Поэтому я аннотировал свое пользовательское исключение @ApplicationException (rollback =true) и выкинул его из моего метода ejb.

Но моя проблема в том, что мое пользовательское исключение никогда не доходит до bean-компонента jsf.Вместо этого он входит в EJBTransactionRolledBackException.

Если я аннотирую свое исключение с помощью @ApplicationException (rollback = false), то транзакция не откатывается, а исключение перехватывается компонентом JSF.

Есть ли способ откатитьтранзакция AND, чтобы бросить исключение Application catchable?

Может ли это быть специфичным для Glassfish?(Я использую Glassfish 3.1.1).

1 Ответ

0 голосов
/ 08 июня 2012

Вы ловите или бросаете исключение в вашем управляемом бине? Если пользовательское исключение наследуется от «Exception», тогда попробуйте предложение throws вместо использования try / catch (при условии, что это то, что вы делаете).

Если ваше пользовательское исключение наследуется от «RuntimeException», то вам не нужно использовать ни предложение try / catch, ни предложение throws.

Это то, что я делаю, и это работает. Кроме этого я не знаю.

...