CXF + 잭슨을 사용하여 빈 응답 기본 POJO를 얻을 수 수 없습니다. null 또는 NoContentException 중 하나를 결정할 수 있습니다.
답변이 명확하지 않습니다. JAX-RS specification 3.3.2.1은 엔티티 본문과 Java 형식 간의 변환이 엔티티 공급자의 책임임을 보증합니다. 인터페이스 MessageBodyReader
는 InputStream로부터 유형을 읽기
T readFrom(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String,String> httpHeaders,
InputStream entityStream)
throws IOException, WebApplicationException
자바
에 엔터티 본문을 매핑합니다.
엔티티 입력 스트림이 비어있는 경우
는 리더가 어느 길이 제로 엔티티의 자바 표시를 리턴하거나 어떤 길이 제로 엔티티 표시가 지원되는 Java 형 정의되지 않은 경우에 NoContentException 던져 예상
. NoContentException는, 서버 요구 엔티티를 읽는 동안, 메세지 본문 리더에 의해 슬로우되었을 경우, JAX-RS 서버 런타임에 의해, 원래의 NoContentException를 랩하는 BadRequestException에 자동적으로 변환되어 등록 된 예외 매퍼에 의해 표준 처리를 위해서 다시 슬로우됩니다.
"아니오 길이 제로의 실체"의 의미는 무엇인지 나를 위해 명확하지 않다. 어쨌든, 귀하의 경우 Jackson에서 엔터티 공급자의 책임입니다. 이 빈 스트림을 발견 한 경우에 ProviderBase의 readFrom() 메소드는 null를 돌려줍니다 JacksonJsonProvider
MessageBodyReader
에 길이 제로의 실체를 해결하는 방법에 대해 잭슨의 팀
Read this post 논의. MessageBodyReader 및 JSR311의 javadoc에 따르면 이것은 허용되지 않습니다.
잭슨 팀 버그가 널 항상 반환, 새로운 사양 JAX-RS2.0을 읽는 고려, 그들은 수 기본값 true
와 잭슨 2.4.0
JaxRSFeature.ALLOW_EMPTY_INPUT
에서 새로운 매개 변수를 추가 이전 버전과 호환됩니다. 비활성화하면 오류가 발생합니다. JAX-RS 2.x의 NoContentException
및 IOException
의 1.x