我有一个带while (true)
的JSP,其中数据被发送到浏览器。代码段
while (true) {
out.print("pushing some data to browser");
out.flush();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
它大部分时间都有效,但很少数据不会以1秒的间隔发送到浏览器。
而不是排队并同时抛出所有数据。
答案 0 :(得分:0)
这是解释为什么它不起作用: JSP是运行时的servlet对象,JSP scriplet /表达式作为Servlet对象的service()方法的一部分被调用。
在这种情况下,当您访问JSP页面时,它将调用service()方法并继续将数据附加到流出,直到线程被app服务器中断(InterruptedException),最后它呈现页面并立即显示数据。
您应该考虑通过扩展HttpServlet实现CommetServlet,这可以支持leavarage app server。
App Server彗星支持示例: