2010-06-28 2 views
1

Я переношу приложение с питанием от Seam 2 на CDI, и одна из вещей, которая важна для меня, - это обработка ошибок. В Seam 2 я просто заменил обработчик исключений по умолчанию своим, но в CDI я предполагаю, что мне придется использовать Interceptor.CDI - ошибки обработки

Как мне установить это с использованием перехватчика, мне нужно указать, где он будет перехватывать вызовы? В основном я хочу выполнить аудит, поэтому, когда возникает исключение, оно регистрируется, затем администратору отправляется уведомление (электронная почта, xmpp, sms, телефонный звонок).

Когда происходит исключение, есть ли просто событие, в котором я могу слушать и действовать?

Walter

ответ

0

Вы используете JSF2? Если да, вместо написания Interceptor вы можете зарегистрировать ExceptionHandlerFactory в своем web.xml as described here. В CustomExceptionHandler вы можете поймать все Исключения и обрабатывать их программно. Я использую этот подход в своем JEE6-CDI-приложении, считаю, что все в порядке.

+0

Это выглядит как хороший кандидат. Я также хочу поймать исключения из асинхронных заданий в центральном месте. Возможно, у меня будет 1 для каждого, один для JSF и один для асинхронных заданий. – 2010-07-18 13:52:11

+0

Несколько исключенийHandlerFactories? Не пробовал. Может быть, вы могли бы сообщить мне, если это сработает. Еще один намек: если вы разворачиваете исключение в ExceptionHandlerFactory (его завернутое в FacesException, иногда также EvaluationException) в исходный тип и выкидываете его изнутри фабрики, вы можете обрабатывать исключения декларативно в файле web.xml (но тогда у вас есть для выполнения некоторых трюков передают информацию об исключении на страницу jsf). – ifischer

Смежные вопросы