异步请求分派器
如果可以在逻辑上对低速操作进行分隔并使其与完成响应所需的其他操作同时执行,那么异步请求分派器 (ARD) 能够缩短 Servlet 响应时间。ARD 使 Java™ Servlet 程序员能够借助不同线程同时执行同一个请求的标准 javax.servlet.RequestDispatcher include 调用。在同一个线程中,这些 javax.servlet.RequestDispatcher include 调用将按顺序完成。对于低速 CPU 和等待时间较长的情况,例如等待数据库连接,ARD 也非常有用。
如果对 CPU 或内存的需求较高,那么单单 ARD 并不能缓解这些问题。但是,与远程请求分派器相结合,由一个 Servlet 请求驱动并可以在多个应用程序服务器中同时执行的操作将降低对单一服务器的资源需求,并且将降低系统当机风险。
Servlet、Portlet 和 JavaServer Pages (JSP) 文件都可以利用 ARD。这项功能是“Java™ Servlet 规范”需求以外的扩展,该规范只描述同步请求分派。ARD 需要 HTTP 和 Web 容器通道之间名为 ARD 通道的新通道,以形成新的通道链。这些新链只与现有的缺省主机链相对应,并且将复用相同的端口。
每一个 include 都可以将输出写至客户机,由于排序对于有效的结果而言至关重要,因此必须对所写的数据进行一定的聚集。通常,Servlet 将数据写入缓冲区,在缓冲区变满后,将对其进行清仓以便将数据写至客户机。对于服务器端聚集而言,ARD 通道直到任何已将占位符写入当前缓冲区的 include 完成后才能执行清仓。
另外,还支持对异步 include 进行客户机端聚集。Web 2.0 程序员经常在客户机的 Web 浏览器中使用 Asynchronous JavaScript and XML (Ajax),动态检索和聚集远程资源。 不幸的是,聚集内容和了解新技术会对程序员造成负担。客户机端聚集自动添加必要的 JavaScript,动态更新页面。对于非 JavaScript 客户机,可以将 ARD 切换到服务器端聚集,这将产生相同的结果。使用客户机端聚集时,可以拒绝非 JavaScript 客户机。
ARD 使用 Web 容器 API 插入唯一请求分派逻辑。 它与 WCCM 进行交互以读取每个企业应用程序的启用状态的配置信息以及全局应用程序服务器设置。您可以使用管理控制台和 wsadmin 来启用或禁用 ARD。Servlet、Portlet 和 JSP 文件都可以利用 ARD。