Nano Hash - криптовалюты, майнинг, программирование

CDI - обработка ошибок

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

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

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

Уолтер


Ответы:


1

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

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

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..