[英]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.