我有一个servlet,它长时间处理请求.它假设
继续在doPost内部循环中执行操作并通过发送数据
响应出来的作家.有效地连续追加数据
客户浏览器.
但是当客户端关闭浏览器时问题就出现了.尽管
断开的连接响应的servlet中的编写器流
永远不会关闭,因此servlet不知道brocen连接,
并保持数据转储到编写器没有任何错误.那个怎么样
posssible?我如何检测和取消长请求处理
浏览器断开的情况?
继续在doPost内部循环中执行操作并通过发送数据
响应出来的作家.有效地连续追加数据
客户浏览器.
但是当客户端关闭浏览器时问题就出现了.尽管
断开的连接响应的servlet中的编写器流
永远不会关闭,因此servlet不知道brocen连接,
并保持数据转储到编写器没有任何错误.那个怎么样
posssible?我如何检测和取消长请求处理
浏览器断开的情况?
我应该在响应编写器上检查checkerror()应该做的伎俩,但它不会缝合工作.有什么想法吗?
这是永远不会停止的servlet代码:
protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException { HttpSession session = request.getSession(); System.out.println("Session " + session.getId() + " started"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { while (!out.checkerror()) { try { Thread.sleep(1000); } catch (InterruptedException ex) { ex.printstacktrace(); } Date date = new Date(); // Todo append output to the client browser here out.println("....."); System.out.println("Session " + session.getId() + "data sent at: " + date); out.flush(); //break; // _TEST } } finally { System.out.println("Session " + session.getId() + " finished"); out.close(); } }
谢谢,
麦克风
解决方法
原文地址:https://www.jb51.cc/java/128821.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。