【发布时间】:2011-07-13 15:04:38
【问题描述】:
在我的应用程序中,我针对异常情况抛出 WebApplicationExceptions,这样我就可以用我的 500 回传好消息。我遇到的问题是我有一个用于休眠事务的 servlet 过滤器,并且注意到 WebApplicationException 在返回到 servlet 过滤器之前被捕获。我已经包含了一个简短版本的 servlet 过滤器作为示例。注意:我只有另一个 servlet 过滤器,它进行身份验证并且没有捕获
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();
}
谢谢, 赎金
编辑:Ryan Stewart 指出我实际上并没有问过问题。我的问题是:如何在 servlet 过滤器中判断在 filterChain 中抛出了 Web 应用程序异常?我原以为泽西岛会重新抛出异常,但这是不正确的。
【问题讨论】:
-
markmail.org/thread/… 描述了另一种可能性,听起来也可行