簡體   English   中英

在jersey中使用streamoutput響應時,如何在我已經刷新一些輸出后處理異常?

[英]When using streamoutput response in jersey,how to handle exception after I already flush some output?

最近我在球衣中使用界面“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();
}   

但是,如果我“立即響應某些東西”給客戶端后,會拋出一些異常。

除了在正常響應的一部分之后暫掛特殊錯誤消息,是否有任何方法來處理這種情況?

如果流式傳輸時出現錯誤,您幾乎無法做任何事情。 您始終可以捕獲異常,但無法恢復已發送的響應。 經典的情況是接收流的客戶端突然變得不可用/中止下載。 最好你可以記錄它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM