为WebSphere Application Server Community Edition开发富Internet应用程序2009-11-12 IBM Manu T. George引言Ajax(异步JavaScript和XML)术语用于表示一组支持创建富Internet应用程序 (Rich Internet Application) 的技术。通过使用这些技术,可以创建响应能力强且具有与桌面应用程序类似的丰富用户界面的Web应用程序。这些技术允许在后台以异步方式检索数据,而不会影响所显示的页面,而且可以仅请求数据,而不用请求整个HTML页面。可以使用现在的浏览器提供的XmlHttpRequest或等效对象进行此异步后台通信。IBM WebSphere Application Server Community Edition v2.1.x(以下称为 Community Edition)的安装包中提供了一些用于开发和承载支持Ajax的应用程序的流行框架。在本文中,我们将了解如何配置和使用其中的三个框架,即:Dojo 工具包DirectWebRemoting (DWR)Tomcat Comet支持我们还将开发一个简单的Web应用程序,其中使用了这些技术来提供得到改善的用户体验。为了遵循本文所述进行操作,您需要WebSphere Application Server Community Edition v2.1.x。Dojo 工具包Dojo 是使用 JavaScript 编写的开源 DHTML 工具集。Dojo 解决了使用 JavaScript 时的一些问题,包括处理浏览器特定的行为。这些行为已经通过 Dojo 工具从用户层面抽象出来了。另外,还提供了一组可配置小部件,可将其用于快速开发独立于浏览器的动态网页。Dojo 工具集由一组 JavaScript API 组成,包含在 WebSphere Application Server Community Edition v 2.1 中。可以通过上下文根 /dojo 访问此工具集。Dojo 还提供了用于进行异步 XMLHttpRequest 调用的 API,以在不刷新页面的情况下从服务器获取数据。DirectWebRemoting (DWR)DWR 允许开发人员通过 JavaScript 代理向客户端公开服务器端的 Java™ 对象。它会为所有公开的 Java™ 对象创建代理,以便从客户端调用这些对象。相应地,DWR 将在服务器中调用对应的 Java 方法,并将响应以 JSON (JavaScript Object Notation) 格式返回到调用方脚本。您可以配置 DWR 在后台以同步或异步方式呼叫服务器。因此,可以避免与普通 HTTP 请求-响应模式关联的页面刷新。DWR 还提供了 ReverseAjax,即用于将信息从服务器以异步方式发送到浏览器的机制。通过这样,服务器可以采用以下方式定期将响应发送到客户端:轮询:客户端定期轮询服务器。Comet:当客户端发出请求时,服务器将保留响应句柄,写入内容保存在此句柄中。在这种情况下,客户端不需要进行轮询。合并: 多个响应组合在一起,随客户端作出的下一个请求的响应一起发送。Tomcat Comet 支持Comet 术语是 Dojo Foundation 的 Alex Russel 发明的,用于描述通过 HTTP 协议进行的事件驱动的服务器推送机制。在普通 HTTP 通信中,客户端始终通过打开到服务器的连接并发送请求来发起数据传输。服务器将处理此请求,在相同连接上发送响应,然后关闭连接。因此,连接的寿命相对较短。在 Comet 中,服务器将连接保持开放状态,会在出现相关事件时持续通过其写入数据。Tomcat p通过 NIO 和 APR 连接器提供了此支持。BIO 连接器并不提供 Comet 支持。创建 NIO 连接器缺省情况下,Community Edition 并不提供预安装的 NIO 连接器。在运行使用 Comet 协议的应用程序前,我们需要从管理控制台创建新 NIO 连接器并将其启动。我们将首先删除在 8080 端口上运行的 BIO 连接器,然后创建在此端口运行的新 NIO 连接器。请按照以下步骤创建 NIO 连接器:启动 Community Edition,并在浏览器中打开 https://localhost:8443/console/。输入用户名 system,并输入密码 manager。点击 Login,将随即在管理控制台中打开 Welcome 页。在左侧导航窗格中,单击WebServer 链接,以打开WebServer Manager 页,如图 1 中所示:图 1.WebServer Manager

删除名为 TomcatWebConnector 的连接器。在 Add New 部分,单击 Tomcat NIO Connector 链接,将随即打开图 2 中所示的屏幕。图 2. 添加新的 Tomcat NIO 连接器

在 uniqueName 字段中填写 TomcatNIOConnector 值,并点击 Save,从而创建并启动 NIO 连接器。您的窗口显示应该与图 3 类似。图 3. 添加到网络侦听器的 TomcatNIOConnector