Rest jersey 2.0 jaxrs RI-异常时返回json字符串

Rest jersey 2.0 jaxrs RI-异常时返回json字符串,rest,jersey,jax-rs,jersey-2.0,Rest,Jersey,Jax Rs,Jersey 2.0,我正在使用jersey 2.0创建一个REST服务。我正在扩展WebApplicationException 引发特定异常的方法 if(json.equals("") || json.equals(" ")) { throw new ArgumentException("bad post data"); } public class ArgumentException extends RestException { .....

我正在使用jersey 2.0创建一个REST服务。我正在扩展WebApplicationException

引发特定异常的方法

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和消息)。然而,当我尝试传递ErrorBean POJO并使用MediaType.APPLICATION_JSON进行响应时,我得到一个错误,说“Headers have have been sent”,http错误代码为500(因此管道出现一些内部问题),响应为空

我也看过这个问题

如何以类似JSON的方式返回代码和消息的异常

{“代码”:400,“消息”:..}

更新

我已经收到了关于SO以及泽西岛用户邮件列表的答复。步骤是

  • 非AJXB POJO不需要任何注释
  • 在应用程序中注册JacksonFeature
ResourceConfig rc=new ResourceConfig().packages(“test”).register(JacksonFeature.class)

您需要在应用程序/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);

请查看新泽西州对杰克逊的支持,以及。

谢谢。这就是我们所缺少的。为了其他人的利益,我添加了一个完整的示例。