面向 Java 开发人员的 Ajax: 探索 Google Web Toolkit

http://tech.ddvip.com   2006年11月20日    社区交流

本文详细介绍面向 Java 开发人员的 Ajax: 探索 Google Web Toolkit

  在 GWT 的术语中,客户机代码与运行在 Web 服务器上的服务 进行通信。用来公开这些服务的 RPC 机制与 Java RMI 使用的方法类似。这意味着只需要编写服务的服务器端实现和两个接口即可。代码生成和反射将负责处理客户机存根和服务器端主干代理(server-side skeleton proxies)。

  相应地,要做的第一步是定义 Weather Reporter 服务的接口。这个接口必须扩展 GWTRemoteService接口,它包含应该公开给 GWT 客户机代码的服务方法的签名。因为 GWT 中的 RPC 调用是在 JavaScript 代码和 Java 代码之间进行的,所以 GWT 集成了对象序列化机制,用它来协调跨语言分界(language divide)的参数和返回值(请参阅 可序列化类型 侧栏,了解您可以使用哪些可序列化类型)。

  定义了服务接口之后,下一步就是在扩展 GWT 的RemoteServiceServlet类的类中实现该接口。顾名思义,这是 Java 语言的HttpServlet的一个具体类,所以可以将它放在任何 servlet 容器中。

  这里值得一提的一个 GWT 特性是:服务的远程接口必须位于应用程序的client包中,因为需要将它集成到 JavaScript 的生成过程中。但是,因为服务器端实现类引用了远程接口,所以现在在服务器端和客户机代码之间存在一个 Java 编译时依赖项。对于这个问题,我的解决方案是将远程接口放在client的common子包中。然后在 Java 构建中包含common包,但不包含client包中的剩余部分。这可以确保客户机代码生成的类文件只是那些需要转换成 JavaScript 的文件。更好的解决方案是将包结构分解成两个源目录,一个负责客户端代码,一个负责服务器端代码,然后将公共类复制到两个目录中。

  清单 6 显示了 Weather Reporter 应用程序使用的远程服务接口WeatherService。它接受 ZIP 代码和摄氏/华氏标记作为输入,返回包含 HTML 天气描述的String。清单 6 显示了YahooWeatherServiceImpl的框架,它使用 Yahoo! 的天气 API 获得给定 ZIP 代码的 RSS 天气种子,并从中获得 HTML 描述。

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

正在加载评论...