Jersey 2.x ExceptionMapper 父映射
Jersey 2.x ExceptionMapper Parent Mapping
编辑:这是 ackson-jaxrs-base 早期版本中的一个问题,已在 jackson-jaxrs-base-2.8 中解决。
https://github.com/FasterXML/jackson-jaxrs-providers/issues/22
我正在努力解决这个问题,异常映射器。我想在单个 ExceptionMapper 中映射 com.fasterxml.jackson.core.JsonProcessingException 的所有子项。
这是我的代码:
@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 的父级
我到底做错了什么?
Class com.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapper 存在于库中并且它实现了 ExceptionMapper。
所以在第一种情况下,这个映射器比你的更合适,因为它处理 JsonMappingException,但你的映射器处理常见的 JsonProcessingException。
第二种情况你的mapper和这个mapper是同级别的,所以可以应用。
回答我自己的问题:
我通过以下方式解决了我的问题。
将 jackson jars 更新为 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();
}
}
它现在按预期工作了。
编辑:这是 ackson-jaxrs-base 早期版本中的一个问题,已在 jackson-jaxrs-base-2.8 中解决。 https://github.com/FasterXML/jackson-jaxrs-providers/issues/22
我正在努力解决这个问题,异常映射器。我想在单个 ExceptionMapper 中映射 com.fasterxml.jackson.core.JsonProcessingException 的所有子项。
这是我的代码:
@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 的父级 我到底做错了什么?
Class com.fasterxml.jackson.jaxrs.base.JsonMappingExceptionMapper 存在于库中并且它实现了 ExceptionMapper。
所以在第一种情况下,这个映射器比你的更合适,因为它处理 JsonMappingException,但你的映射器处理常见的 JsonProcessingException。
第二种情况你的mapper和这个mapper是同级别的,所以可以应用。
回答我自己的问题:
我通过以下方式解决了我的问题。 将 jackson jars 更新为 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();
}
}
它现在按预期工作了。