Это не возможно получить POJO по умолчанию пустой ответ, используя CXF + Джексон. Вы можете выбрать между null или NoContentException
Ответ не очевиден. JAX-RS specification 3.3.2.1 утверждает, что преобразование между телом сущности и типом Java является обязанностью поставщика объекта. Интерфейс MessageBodyReader
отображает тело сущности к Java
T readFrom(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,String> httpHeaders,
InputStream entityStream)
throws IOException, WebApplicationException
Почитаю тип из InputStream.
В случае входного объекта поток пуст, читатель должен либо вернуть представление Java от нулевой длины объекта в или бросить NoContentException в случае не представление объекта нулевой длины не определенно для поддерживаемого типа Java , Исключение NoContentException, если оно выдается читателем тела сообщения при чтении объекта запроса сервера, автоматически переводится с помощью среды выполнения JAX-RS в исключение BadRequestException, которое обертывает исходное исключение NoContentException и возвращается для стандартной обработки зарегистрированными агентами исключения.
Это не для меня ясно, что смысл «не нулевой длины объекта». В любом случае, это ответственность поставщика организации, в вашем случае Джексона.
Read this post команды Джексона обсуждал о том, как иметь дело с сущностями нулевой длиной в JacksonJsonProvider
MessageBodyReader
Метод readFrom() в ProviderBase возвращает нуль, когда он сталкивается с пустым потоком. В соответствии с javadoc для MessageBodyReader и JSR311 это недопустимо.
Джексон команда считают возвращение нулевой всегда является ошибкой, и чтение новой спецификации JAX-RS2.0, они добавить новый параметр в Джексон 2.4.0
JaxRSFeature.ALLOW_EMPTY_INPUT
со значением по умолчанию true
быть совместимый с предыдущими версиями. При отключении он вызовет ошибку. NoContentException
для JAX-RS 2.x и IOException
с 1.x