面向 Java 开发人员的 Ajax: 探索 Google Web Toolkit
http://tech.ddvip.com 2006年11月20日 社区交流
本文详细介绍面向 Java 开发人员的 Ajax: 探索 Google Web Toolkit
清单 7. WeatherService 的异步接口
public interface WeatherServiceAsync {
/**
* Fetch HTML description of weather, pass to callback
* @param zip zipcode to fetch weather for
* @param isCelsius true to fetch temperatures in celsius,
* false for fahrenheit
* @param callback Weather HTML will be passed to this callback handler
*/
public void getWeatherHtml(String zip, boolean isCelsius,
AsyncCallback callback);
}可以看到,一般的想法是创建叫做MyServiceAsync的接口,并提供与每个方法签名对等的事物,然后删除所返回类型,添加类型为AsyncCallback的额外参数。异步接口必须放在与远程接口相同的包中。AsyncCallback类有两个方法:onSuccess()和onFailure()。如果对服务的调用成功,则用服务调用的返回值调用onSuccess()。如果远程调用失败,则调用onFailure(),并传递由该服务生成的Throwable,以表示失败的原因。
从客户机调用服务
有了WeatherService和它的异步接口之后,现在就可以修改 Weather Reporter 客户机,从而调用服务并处理服务器响应。第一步只是公式化地设置代码:通过调用GWT.create(WeatherService.class)并向下传送所返回的对象,创建一个在 Weather 客户机上使用的WeatherServiceAsync实例。接下来,必须将WeatherServiceAsync强行转换成ServiceDefTarget,这样才能在它上面调用setServiceEntryPoint()。setServiceEntryPoint()指向对应的远程服务实现所部署的 URL 上的WeatherServiceAsync存根。请注意,这实际上是在编译时硬编码的。因为这个代码成为在 Web 浏览器中部署的 JavaScript,所以没办法在运行时从属性文件中查找这个 URL。显然,这限制了编译后的 GWT Web 应用程序的移植性。
来源:ibm 作者:Philip McCarthy 责编:豆豆技术应用