gpt4 book ai didi

java - Jersey WebApplicationException 和 servlet 过滤器

转载 作者:行者123 更新时间:2023-11-30 06:34:38 26 4
gpt4 key购买 nike

在我的应用程序中,我为异常情况抛出 WebApplicationExceptions,这样我就可以用我的 500 传回不错的消息。我遇到的问题是我有一个用于 hibernate 事务的 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 过滤器中判断过滤器链中抛出了 Web 应用程序异常?我原以为 Jersey 会重新抛出异常,但这是不正确的。

最佳答案

既然你没有问一个具体的问题,我会做一些观察。

  1. 您应该使用声明式事务,例如 Spring 提供的事务,而不是尝试自己以这种方式管理它们,因为您会遇到这样的问题。
  2. 与 1. 类似,我非常怀疑您会想要回滚所有异常的事务。同样,研究一个框架来帮助您解决这个问题。
  3. WebApplicationException 被 Jersey 拦截和处理。假设您正在以标准方式将 Jersey 作为 servlet 运行。过滤器围绕 servlet 执行。因此,Jersey servlet 会在异常通过过滤器之前对其进行处理。

关于java - Jersey WebApplicationException 和 servlet 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6681049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com