在执行StreamingOutput时不使用JAX RS ExceptionMapper

时间:2015-06-03 10:02:43

标签: java jersey streaming jax-rs

我在JAX-RS应用程序(Jersey 1.19)中有一个异常映射器:

public class IllegalArgumentExceptionMapper
    implements ExceptionMapper<IllegalArgumentException> {
  @Override
  public Response toResponse(IllegalArgumentException e) {
    Response.Status status = Response.Status.BAD_REQUEST;
    return Response.status(status).entity(e.getMessage()).build();
  }
}

在这种情况下,它正常工作(客户端将获得HTTP状态400):

@GET
@Path("/test1")
public String test2() {
  throw new IllegalArgumentException("exception 1");
}

但如果我像那样做流式输出:

@GET
@Path("/test2")
public String test2() {
  return new StreamingOutput() {
    @Override
    public void write(OutputStream output) {
      throw new IllegalArgumentException("exception 2");
    }
  };
}

然后不使用异常映射器,客户端获取HTTP状态500.那么如何强制它使用异常映射器?

0 个答案:

没有答案