2013-07-19 2 views
1

저지 2.0을 사용하여 REST 서비스를 만들고 있습니다. 나는 특정 예외를저지 2.0 jaxrs RI - json string 예외가있는 경우

if(json.equals("") || json.equals(" ")) { 
     throw new ArgumentException("bad post data"); 
} 


     public class ArgumentException extends RestException { 
     ..... 

     public ArgumentException(String message) { 
      super(Status.BAD_REQUEST,message); 
     } 
    } 


    public class RestException extends WebApplicationException { 
    ........... 
    public RestException(Status status, String message) { 

      super(Response.status(status) 
        .entity(message) 
        .type("text/plain") 
        .build()); 
      /* 
      super(Response.status(status) 
        .entity(new ErrorBean(status.getStatusCode(),message)) 
        .type(MediaType.APPLICATION_JSON) 
        .build()); */ 

     } 


ErrorBean is a POJO 

RestException 내부 일반 문자열 작품으로 오류 (오른쪽 HTTP 코드 (400) 및 메시지)을 반환하는 방법을 제기 WebApplicationException에게

방법을 확장하고있다. 그러나 내가 ErrorBean POJO를 전달하려고하고 응답으로 MediaType.APPLICATION_JSON을 사용하려고하면 "헤더가 이미 보내졌습니다"라는 HTTP 오류 코드 500 (배관의 일부 내부 문제)과 빈 응답이 표시됩니다.

나는 또한이 질문에 보았다

Returning JSON or XML for Exceptions in Jersey

내가

같은 JSON으로 코드 및 메시지와 함께 예외를 반환 할 수있는 방법 { "코드"400, "메시지"....}

업데이트

난에 SO뿐만 아니라 메일 링리스트를 저지 사용자 응답을 받았습니다. 단계는 비 AJXB POJO 응용 프로그램에서

ResourceConfig의 RC = 새로운 ResourceConfig(). 패키지 ("테스트") 어떤 주석

  • 등록 JacksonFeature이 필요하지 않습니다

    • 이다. (JacksonFeature를 등록합니다. 수업);

  • 답변

    2

    당신은 당신의 응용 프로그램/ResourceConfig, 즉 :

    // Create JAX-RS application. 
    final Application application = new ResourceConfig() 
         .packages("org.glassfish.jersey.examples.jackson") 
         .register(JacksonFeature.class) 
         // No need to register this provider if no special configuration is required. 
         .register(MyObjectMapperProvider.class); 
    

    example에서 또한 잭슨 뉴저지에서 지원을위한 documentation에서보세요에 JacksonFeature을 등록해야합니다.

    +0

    감사합니다. 이것은 놓친 것입니다. 나는 다른 사람들의 유익을위한 완전한 예를 추가했다. – rjha94

    관련 문제