2013-05-24 3 views
3

Jersey의 MessageBodyWriter에서 HTTP 상태를 변경하려면 어떻게해야합니까? httpHeaders 및 entityStream을 통해 writeTo 메서드에서 헤더 및 본문 응답 메시지를 변경할 수 있지만 HTTP 상태를 변경하는 방법을 알지 못합니다.MessageBodyWriter에서 HTTP 상태를 변경할 수 있습니까?

@Provider 
@Produces(MediaType.APPLICATION_JSON) 
public class MessageBodyWriterJSON implements MessageBodyWriter<Object> { 

    @Override 
    public void writeTo(Object t, Class<?> type, Type genericType, 
     Annotation[] annotations, MediaType mediaType, 
     MultivaluedMap<String, Object> httpHeaders, 
     OutputStream entityStream) throws IOException, 
     WebApplicationException { 
     // ...??? 
    } 

} 

답변

4

WebApplicationException을 throw하여 http 상태를 변경할 수 있습니다. 이 기술적으로 모든 Response.Status 유형을 포함 할 수 있지만

Response response = Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); 
throw new WebApplicationException(response); 
+0

, 정말 204 내용 없음 대 OK 200 사이에서 선택을 예외를 throw하는 것이 적절 생각하지 않습니다. – Patrick

+0

수정되지 않은 응답을 보내려는 경우이를 사용하고 있습니다. –