我有一个使用GWT-RPC的GWT客户端来调用我的REST服务。为什么其中一些评论使GWT-RPC对抗REST,就好像你必须选择其中一个?我在客户端上使用BOTH ... GWT-RPC,它可以访问REST服务。我想使用替代和沟渠GWT-RPC。为什么?它是慢的(与我的Flex客户端相比,它可以达到相同的服务)。我查看了RestyGWT,但是它很棒的文档(讽刺)让我觉得我需要构建一个我的RestyGWT客户端可以访问的RestyGWT服务。吉兹,不,谢谢。我的服务已经完成。我真的不想碰它。所以听起来像一个可能的替代方案是从我的服务生成客户端lib并在我的GWT客户端中使用它与RequestBuilder一起处理JSON到java对象的编码/解码(并希望获得改进的性能)。如果这没有削减它,下一个选择是完全放弃GWT。
答案 0 :(得分:3)
看看Errai JAX-RS构建“REST”客户端(差不多)就像使用GWT-RPC一样容易。
答案 1 :(得分:1)
GwtQuery autobeans和ajax,是gwt-autobeans和gwt-requestbuilder(以及其他json解决方案,如erray,resty)的轻量级客户端替代品使用REST。
它基于jquery api,但它已经在java中完全重写,充分利用了jquery简单性和gwt性能。
IMO,它是使用3方服务(xml,json,jsonp等)的最佳选择之一。它提供了一种简单的语法,以及许多功能,如promises(可在1.4.0-SNAPSHOT上获得)等。
这是一个如何使用json rest服务并将其映射到java bean的示例。正如您所看到的那样简单,性能非常好。
// Let GQuery generator wrap json to java
// there is a generator for xml services as well.
public static interface MyBean extends JsonBuilder {
long getId();
String[] getTags();
String getTitle();
}
public void onModuleLoad() {
// Configure a JSON Ajax request
Settings rq = Ajax.createSettings()
.setUrl("rest_service.js")
.setType("post") // options: get post put delete head
.setDataType("json") // send and read json data
.setData($$("foo: bar")); // Your JavaScriptObject
// last GQuery Ajax returns a chainable Promise which makes the code more
// readable instead of dealing with callback parameters
Ajax.ajax(rq)
.done(new Function() {
public void f() {
// You can inspect arguments with this
System.out.println(dumpArguments());
// Create the bean, and wrap the json object read
MyBean b = GWT.create(MyBean.class);
b.load(arguments(0));
// toString in JsonBuilder returns the json string
System.out.println(b.toString());
}
})
.fail(new Function() {
public void f() {
}
});
}