在jersey中使用streamoutput响应时,如何在我已经刷新一些输出后处理异常?

时间:2013-12-11 09:07:24

标签: java rest jersey

最近我在球衣中使用了“StreamingOutput”界面来传输我的json格式响应,例如:

@GET
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public Response test(){
    StreamingOutput stream = new StreamingOutput() {

        @Override
        public void write(OutputStream os) throws IOException,
        WebApplicationException {
            Writer writer = new BufferedWriter(new OutputStreamWriter(os));
                for( ...  loop ...) {
                    //response something immediatly
                    writer.write(somthing ...);
                writer.flush();
            }
        }
    };

    return Response.ok(stream).build();
}   

但是,如果我“立即响应某些东西”到客户端后,会抛出一些异常。

除了在正常响应的一部分之后暂挂特殊错误消息, 有没有办法处理这个条件??

1 个答案:

答案 0 :(得分:4)

如果流式传输时出错,则几乎无法执行任何操作。您始终可以捕获异常,但无法恢复已发送的响应。经典的情况是接收流的客户端突然变得不可用/中止下载。最好你可以记录它。