out.print 不将数据推送到浏览器
Posted
技术标签:
【中文标题】out.print 不将数据推送到浏览器【英文标题】:out.print not pushing the data to browser 【发布时间】:2013-03-09 12:39:15 【问题描述】:我有一个带有while (true)
的JSP,其中数据被发送到浏览器。代码sn-p
while (true)
out.print("pushing some data to browser");
out.flush();
try
Thread.sleep(1000);
catch (InterruptedException e)
它大部分时间都可以工作,但很少会以 1 秒的间隔将数据发送到浏览器。
而不是排队,同时抛出所有数据。
【问题讨论】:
周期性发送数据的动机是什么?您是否正在尝试实现 Comet 消息传递系统? 我将此循环用作 pushlet 概念(将数据从服务器推送到客户端) 【参考方案1】:这是为什么它不起作用的解释: JSP 在运行时是一个 servlet 对象,JSP 脚本/表达式作为 Servlet 对象的 service() 方法的一部分被调用。
在这种情况下,当您访问 JSP 页面时,它会调用 service() 方法并继续将数据附加到流中,直到线程被应用服务器中断(InterruptedException),最后它会立即呈现页面并显示数据。
您应该考虑通过扩展可以保留应用服务器支持的 HttpServlet 来实现 CommetServlet。
App Server comet 支持示例:
雄猫:http://tomcat.apache.org/tomcat-6.0-doc/aio.htm 码头:http://download.eclipse.org/jetty/stable7/apidocs/org/eclipse/jetty/continuation/ContinuationSupport.html 树脂:http://caucho.com/resin-3.1/examples/servlet-comet/【讨论】:
以上是关于out.print 不将数据推送到浏览器的主要内容,如果未能解决你的问题,请参考以下文章
Kafka-Connect Cassandra Sink 连接器不将数据推送到 Cassandra
将文件推送到 Github/Gitlab 而不将其添加到 .git?