泽西/杰克逊 异常问题与异常映射器
我正在使用泽西岛向外界提供java REST服务。我提供了一些采用JSON的函数,我将Jackson框架与球衣结合使用,将它们转换为POJO。
我有一个问题,如果将错误的jackson格式发送到服务器,则答案(http响应的内容)是jackson特定的异常描述。如果我有一个带有属性“surname”的POJO,并将json字符串中的“sursname”发送到服务器,我得到:
Unrecognized field "sursname" (Class XY), not marked as ignorable at [Source: sun.net.httpserver.FixedLengthInputStream@903025; line: 1, column: 49] (through reference chain: XY["sursname"])
这很好,但我想有自己的响应内容,例如我自己的错误代码。我已经编写了一个自定义异常映射器,它应该映射所有可抛出的。
@Provider
public class WebserviceExceptionMapper implements ExceptionMapper<Throwable> {
@Override
public Response toResponse(Exception e) {
e.printStackTrace();
return Response.status(400).entity("{\"errorcode\":\"CRITICAL_ERROR\"}").type(MediaType.APPLICATION_JSON).build();
}
}
似乎在我的Webservice方法被调用之前抛出了jackson异常,所以我没有机会映射它?
有人有想法吗?非常感谢我的英语;)