使用Jetty和DWR实现Comet Web应用程序

http://tech.ddvip.com   2007年08月09日    社区交流

内容摘要:结合使用 Comet 模式(将数据推到客户机)和 Jetty 6 的 Continuations API(将 Comet 应用程序扩展到大量客户机中)。您可以方便地在 Direct Web Remoting (DWR) 2 中将 Comet 和 Continuations 与 Reverse Ajax 技术结合使用。

  Jetty 6 有何不同

  Jetty 6 的目的是扩展大量同步连接,使用 Java™ 语言的非阻塞 I/O(java.nio)库并使用一个经过优化的输出缓冲架构(参阅 参考资料)。Jetty 还为处理长期连接提供了一些技巧:该特性称为 Continuations。我将使用一个简单的 servlet 对 Continuations 进行演示,这个 servlet 将接受请求,等待处理,然后发送响应。接下来,我将展示当客户机数量超过服务器提供的处理线程后发生的状况。最后,我将使用 Continuations 重新实现 servlet,您将了解 Continuations 在其中扮演的角色。

  为了便于理解下面的示例,我将把 Jetty servlet 引擎限制在一个单请求处理线程。清单 1 展示了 jetty.xml 中的相关配置。我实际上需要在 ThreadPool 使用三个线程:Jetty 服务器本身使用一个线程,另一线程运行 HTTP 连接器,侦听到来的请求。第三个线程执行 servlet 代码。

  清单 1. 单个 servlet 线程的 Jetty 配置<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
 "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
  <Set name="ThreadPool">
   <New class="org.mortbay.thread.BoundedThreadPool">
    <Set name="minThreads">3</Set>
    <Set name="lowThreads">0</Set>
    <Set name="maxThreads">3</Set>
   </New>
  </Set>
</Configure>

来源:developerWorks    作者:Philip McCarthy    责编:豆豆技术应用

正在加载评论...