我有这个 Restlet 结构:
我实例化一个服务器对象:
server = new Server(new Context(), config.getServerProtocol(), config
.getServerPort());
在我实例化一个扩展应用程序的新 MyApp 类之后:
app = new org.myproject.restlet.server.MyApp(
config, server.getContext());
app.start();
并启动服务器:
server.setNext(app);
server.start();
我没有任何组件,MyApp 分发到路由器并处理请求。如果此时有人有意见,将不胜感激。我正在使用 Restlet 2.0.14 JSE,并且我链接了码头 jar 以像我的 http 服务器一样使用它。我的服务器工作正常,我有一个 ajax 调用的 javascript 客户端,带有一个经典的轮询。但是我需要在服务器中实现长轮询(由于某些原因,我丢弃了流和推送模式)。我正在阅读如何实现这一点,第一种方式(丑陋的方式)可能是: - 在服务器中休眠线程并在服务器可能有东西时恢复。这种方式被丢弃,因为它不可扩展(这里有一篇关于它的帖子)。- 第二种方法可能是使用版本 7 的 Jetty continuations api。在此链接中我可以看到如何使用 jetty comet api 来暂停请求,但我不知道如何应用于我的 restlet 实现,如另一个链接中所述,我可以看到:
Continuation continuation = ContinuationSupport.getContinuation(request);
continuation.suspend();
但是 getContinuation 方法接收一个 ServletRequest 对象。但我的请求不是 ServletRequest。有人知道如何在 restlet 中转换或使用 ServletRequest 吗?可能我没有服务器编程的所有概念。