В моем приложении я выкидываю исключения WebApplicationException для случаев, когда я могу передавать хорошие сообщения с моими 500-ми. Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть фильтр сервлетов для транзакций гибернации, и я заметил, что WebApplicationException перехватывается до того, как он возвращается к фильтру сервлетов. В качестве примера я включил краткую версию моего фильтра сервлетов. Примечание: у меня есть только один другой фильтр сервлетов, который выполняет аутентификацию и не имеет перехватов
try {
em = MauiPersistenceUtil.getEntityManager();
em.getTransaction().begin();
// raises WebApplicationException
filterChain.doFilter(request, response);
// since WebApplicationException is trapped somewhere else up
// the filterChain bad data is committed here
em.getTransaction().commit();
} catch (Throwable ex) {
// I want the WebApplicationException to reach here
em.getTransaction().rollback();
}
Спасибо,
Выкуп
Редактировать: Райан Стюарт указал, что я на самом деле не задавал вопрос. Мой вопрос: как я могу сказать в фильтре сервлетов, что исключение веб-приложения было выброшено в filterChain? Я ожидал, что Джерси сбросит исключение, но это было неверно.