保持servlet流打开而不阻塞工作线程

时间:2013-12-20 04:48:17

标签: servlets server-sent-events java-ee-7

我正在尝试实现HTML 5 SSE功能。为此,我需要保持响应流长时间打开。现在我的实现如下。

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {


    resp.setContentType("text/event-stream");
    resp.setCharacterEncoding("UTF-8");
    PrintWriter pw = resp.getWriter();

    Broadcaster.add(pw);

    try {
        Thread.sleep(1000*60*60);
    } catch (InterruptedException ex) {
        Logger.getLogger(TestServelet.class.getName()).log(Level.SEVERE, null, ex);
    }
    Broadcaster.remove(pw);
}

我上面的代码我让线程睡了1个小时,这样我就可以让PrintWriter保持打开1小时。我知道暂停线程不是好方法。

我想知道为什么即使在返回调用servlet后我仍可以保持PrintWriter保持打开状态?或者是否有任何不同的方法来实现这种效果?

1 个答案:

答案 0 :(得分:0)

Here您将找到可能符合您要求的示例应用程序(HTML + Servlets)。

您也可以使用WebSockets