Я использую Джерси, чтобы предоставить услугу REST Java для внешнего мира. Я предлагаю некоторые функции, которые принимают JSON, и я использую структуру Jackson в сочетании с трикотажем, чтобы преобразовать их в POJO.
У меня возникла проблема, что если на сервер отправляется неправильный формат джексона, ответ (содержимое ответа HTTP) является описанием исключения для джексона. Если у меня есть POJO с атрибутом "фамилия" и отправьте "sursname" в строке json на сервер, я получаю:
Unrecognized field "sursname" (Class XY), not marked as ignorable at [Source: [email protected]; line: 1, column: 49] (through reference chain: XY["sursname"])
Это нормально, но я хотел бы иметь собственный контент для ответа, например, свой собственный код ошибки. Я уже написал пользовательский ExceptionMapper, который должен отображать все Throwables.
@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();
}
}
Кажется, что исключение Jackson выбрано перед вызовом метода webservice, поэтому у меня нет возможности его сопоставить?
Есть ли у кого-нибудь идеи? Большое спасибо и извините за мой английский;)