Как вручную обработать JsonMappingException вместо того, чтобы позволить контейнеру обрабатывать его - PullRequest
0 голосов
/ 17 сентября 2018

У нас есть несколько приложений Spring Boot, которые предоставляют службы REST, ожидающие сообщения JSON.

В нашей конфигурации на Джерси зарегистрированы как «JsonParseExceptionMapper», так и «JsonMappingExceptionMapper».Я установил точки останова в обоих этих методах "toResponse".

Затем я отправил запрос в службу со свойством, содержащим значение, которое, как я знаю, приведет к сбою поиска конструктора.Это не попало ни в одну из этих точек останова.Полученный ответ выглядит примерно так:

{
    "timestamp": "2018-09-17T18:55:04.882+0000",
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.glassfish.jersey.server.ContainerException",
    "message": "com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of ...",
    "path": "..."
}

Затем я попытался установить точку останова в статических методах JsonMappingException и повторно запустить мой тест.Он достиг этой точки останова, но я не смог увидеть какой-либо класс mapper, который форматировал бы ответ, который я вижу.

Я хочу иметь возможность обрабатывать подобные ошибки в пользовательском преобразователе., возможно, чтобы ограничить информацию, которая возвращается.Как я могу это сделать?

Обновление :

У меня не так много обновлений, кроме того, что я добавлю тег "jersey".Я должен найти способ, чтобы контейнер не выдавал эту ошибку.Самая большая проблема в том, что ответ содержит исходный запрос.Это может показаться неважным, но наша CSO считает, что это проблема безопасности, особенно если в запросе присутствуют данные CPI.

...