【问题标题】:Jersey 2.x ExceptionMapper Parent MappingJersey 2.x ExceptionMapper 父映射
【发布时间】:2017-01-01 23:53:57
【问题描述】:

编辑:这是 ackson-jaxrs-base 早期版本中的一个问题,在 jackson-jaxrs-base-2.8 中已解决。 https://github.com/FasterXML/jackson-jaxrs-providers/issues/22

我正在努力解决这个问题,使用异常映射器。我想将 com.fasterxml.jackson.core.JsonProcessingException 的所有子项映射到一个单一的 ExceptionMapper 中。

这是我的代码:

@Provider
public class JsonProcessingExceptionMapper implements ExceptionMapper<JsonProcessingException> {

    @Override
    public Response toResponse(JsonProcessingExceptionexception) {
        return Response.status(Response.Status.BAD_REQUEST)
                .entity("json parsing error!")).build();
    }

使用以下代码可以正常工作:

@Provider
public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> {

    @Override
    public Response toResponse(JsonMappingException exception) {
        return Response.status(Response.Status.BAD_REQUEST)
                .entity("parsing error!").build();
    }
}

编辑:JsonProcessingException 是 JsonMappingException 的父级 我到底做错了什么?

【问题讨论】:

    标签: java jackson jax-rs jersey-2.0 jackson2


    【解决方案1】:

    回答我自己的问题:

    我通过以下方式解决了我的问题。 将 jackson jar 更新为 2.8x 并添加了以下注释。

    @Priority(4000)
    @Provider
    public class JsonMappingExceptionMapper implements ExceptionMapper<JsonMappingException> {
    
        @Override
        public Response toResponse(JsonMappingException exception) {
            return Response.status(Response.Status.BAD_REQUEST)
                    .entity("parsing error!").build();
        }
    }
    

    它现在按预期工作。

    【讨论】:

      【解决方案2】:

      类 com.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapper 存在于库中,它实现了 ExceptionMapper。

      所以在第一种情况下,这个映射器比你的更合适,因为它处理 JsonMappingException,但你的处理常见的 JsonProcessingException。

      在第二种情况下,您的映射器与此映射器具有相同的级别,因此可以应用它。

      【讨论】:

      • 那么,没有办法将 JsonProcessingException 的所有子级映射到单个 ExceptionMapper 中?
      • 我不知道是否可以删除提供程序。也许你必须做解决方法。但可能这个stackoverflow.com/questions/17794372/… 会帮助你。
      猜你喜欢
      • 2015-03-14
      • 2015-10-28
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多