out.print没有将数据推送到浏览器

时间:2013-03-09 12:39:15

标签: jsp buffer flush server-push

我有一个带while (true)的JSP,其中数据被发送到浏览器。代码段

while (true) {
    out.print("pushing some data to browser");
    out.flush();

    try {
        Thread.sleep(1000);
    } catch (InterruptedException e) {
    }
}

它大部分时间都有效,但很少数据不会以1秒的间隔发送到浏览器。

而不是排队并同时抛出所有数据。

1 个答案:

答案 0 :(得分:0)

这是解释为什么它不起作用: JSP是运行时的servlet对象,JSP scriplet /表达式作为Servlet对象的service()方法的一部分被调用。

在这种情况下,当您访问JSP页面时,它将调用service()方法并继续将数据附加到流出,直到线程被app服务器中断(InterruptedException),最后它呈现页面并立即显示数据。

您应该考虑通过扩展HttpServlet实现CommetServlet,这可以支持leavarage app server。

App Server彗星支持示例: