在Restlet中使用Jetty continuation来实现Long-Polling

时间:2012-07-06 12:12:05

标签: jetty comet restlet long-polling

我有这个Restlet结构:

我实例化一个Server对象:

server = new Server(new Context(), config.getServerProtocol(), config
                            .getServerPort());

我需要实现一个扩展Application的新MyApp类:

app = new org.myproject.restlet.server.MyApp(
    config, server.getContext());
app.start();

启动服务器:

server.setNext(app);
server.start();

我没有任何组件,MyApp分发到路由器并处理请求。如果此时有人发表评论,我将不胜感激。 我正在使用Restlet 2.0.14 JSE,我链接jetty jar以像我的http服务器一样使用它。我的服务器工作正常,我有一个javascript客户端,使用经典民意调查进行ajax调用。但我需要在服务器中实现长轮询(由于某些原因,我丢弃了流和推送模式)。 我正在阅读如何实现这一点,第一种方式(丑陋的方式)可能是: - 在服务器中休眠线程并在服务器可能有某些东西时恢复。这种方式被丢弃,因为它不可伸缩(here are a post about it)。 - 第二种方式可能是使用版本7的Jetty continuation api。在此link我可以看到如何使用jetty comet api暂停请求,但我不知道如何应用于我的restlet实现,如这个another link,我可以看到:

Continuation continuation = ContinuationSupport.getContinuation(request);
continuation.suspend();

但getContinuation方法接收ServletRequest对象。但我的请求不是ServletRequest。有谁知道如何在restlet中转换或使用ServletRequest?可能我没有服务器编程的所有概念。

1 个答案:

答案 0 :(得分:0)

我不能将Jetty延续与Restlet即时提供的码头一起使用。为了实现长轮询我忘记了Restlet并使用java并发实现:wait()& notify(),一切正常运行