当前位置: 首页 > 知识库问答 >
问题:

对ForbiddenException未调用ExceptionMapper

赵炯
2023-03-14

我在Spring靴中使用泽西岛。我有一个异常映射器

如果我的代码抛出一个< code>RuntimeException,则调用< code > my exception mapper . to response()。

但是,如果我的应用程序抛出一个javax.ws.rs.ForbiddenException,那么即使我的ExceptionMapper是一个ExceptionMapper,也不会调用它

我假设泽西有一个默认的ExceptionMapper,它正在处理WebApplication ationException(我假设)。我如何自定义这个?

我真正想做的是在任何< code>Throwable的情况下添加调试日志记录(其余代码对于非WebApplicationException工作正常)。有更好的方法吗?

共有1个答案

佟嘉祯
2023-03-14

所以有两部分:

首先,Jersey没有命中我的ExceptionMapper的原因是,它只在内部不支持映射时才会尝试这样做。ServerRuntime。响应程序类尝试映射任何WebApplicationException。只有当这由于任何原因没有成功时,才会向ExceptionMapper提供异常(至少这是我看到的行为)。

其次,有两种方法可以添加日志记录:

> < li >设置< code>ServerRuntime的日志记录级别。响应者。对我来说,这太宽泛了,因为它会记录所有的响应,而不仅仅是异常。这是这样描述的:https://stackoverflow.com/a/41484564/905762 < li>

我采用的解决方案是添加一个< code > container response filter 并从< code>ContainerRequest中获取异常。这里有所描述:https://stackoverflow.com/a/19680862/905762

公共类异常日志容器响应过滤器实现容器响应过滤器{私有final static记录器LOGGER=LoggerFactory.getLogger(ExceptionsLoggingContainerResponseFilter.class);

@覆盖公共void筛选器(ContainerRequestContext请求,ContainerResponseContext响应){Throwable Throwable=((Container request)response).getMappedThrowale();if(Throwable!=null){LOGGER.info(buildErrorMessage(request),throwaable);}}

 类似资料:
  • 问题内容: 我有一个包裹在另一个里面的物体。“包装器”通过重写从“包装”对象访问属性。直到我需要重写子类上的属性,然后使用来从基类访问该属性之前,此方法都有效。 我仍然可以直接从中访问属性,但是为什么不起作用? 问题答案: 据此, super不允许隐式调用诸如的“ hook”函数。我不确定为什么要用这种方式实现(这可能是一个很好的理由,并且由于超级对象具有自定义和方法,所以事情已经很混乱了),但似

  • 我试图在我的数据库中保存一个json对象。未调用save()函数,但从未保存json对象。帮我解决这个问题。我想这是猫鼬的连接问题。这是我的密码。。 我的控制台日志:: 新增用户api命中!!json的内容是: 143没有userrs: 144 db中的用户计数已更新!!这个人生成的id是:ipkoID_C144调用保存函数obj::{"name":"Abhi","密码":"jio","usern

  • 如何验证一个模拟对象根本没有被调用?我正在尝试使用Mockito测试一个接口方法的空实现。

  • 我正在开发一个带有ActionBars的应用程序,它支持姜饼和其他功能。所以基本上我在使用支持库并扩展 行动B活动 对于我所有的活动。除了 onSupportNavigateUp() 方法。它只是不被调用在留档中所述。 每当用户选择从操作栏在应用程序的活动层次结构中向上导航时,就会调用此方法。 这很容易,但我一直不明白为什么它不能像预期的那样工作,谷歌也帮不上忙。这是虫子吗?还是我错过了什么?

  • 运行playstore Build Apk时,未调用Marshmallow Runtime Permissions onRequestPermissionsResult,但正常调试Apk时运行良好。谁来帮帮我。。谢谢 OnRequestPermissionResult方法

  • 我很难让正常工作。无论我怎么努力,我都不能让它被称为。 我的应用程序的体系结构如下所示:我的主活动包含一个片段,其中包含一个ViewPager,而ViewPager又有四个子片段实例。目前,我正在(成功地)用填充活动中的初始选项菜单,但我希望添加一些对应于每个活动子片段的额外选项。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这个问题上两天了。 更新--我已经搞清楚了现在的问题是什么