我正在尝试开发一个Spring Roo / GWT应用程序,其中最新的GWT集成在Roo中。
让脚手架工作非常简单,但我真的不明白RPC是如何工作的。
有人可以提供一个简单的示例,说明如何在Spring Roo和GWT中连接客户端/服务器的简单服务。
一开始会非常有帮助,因为我找不到任何资源。
thx&问候, FLO
答案 0 :(得分:7)
弗洛,
不确定你是否依赖谷歌浪潮,但这似乎是一个保持当前努力速度的地方。特别是这种浪潮可供公众使用: RequestFactory Wave
它涵盖了有关RequestFactory API的详细信息(很多新兴细节)。
基本思想是在服务器端和客户端都需要域模型对象。使用hibernate可能会导致类文件出现问题,并且人们已经拥有两组模型对象,并使用自定义GWT-RPC在客户端和服务器端模型对象之间发出服务器请求和编组/取消编组。不是理想的解决方案。即使您可以使用相同的模型对象,RPC的开销也是拖累。
输入RequestFactory,我们看到Google工程师可能会获得他们的价值。看一下从.roo生成的示例代码 - 特别是ApplicationRequestFactory.java。
package com.springsource.extrack.gwt.request;
import com.google.gwt.requestfactory.shared.RequestFactory;
public interface ApplicationRequestFactory extends RequestFactory {
ReportRequest reportRequest();
ExpenseRequest expenseRequest();
EmployeeRequest employeeRequest();
}
这是一个为每个域对象提供请求方法的接口。项目中没有定义此类的实现。它在EntryPoint中实例化,调用GWT.create(...):
final ApplicationRequestFactory requestFactory =
GWT.create(ApplicationRequestFactory.class);
requestFactory.init(eventBus);
在com.springsource.extrack.gwt.request
包中,您将看到一个ApplicationEntityTypesProcessor.java,它巧妙地使用泛型打包对域类的引用,以便稍后在演示文稿中使用。该软件包的其余部分是每个模型对象的事件和处理程序。
具体来说,每个对象有四个自动生成的类:
请记住,幕后生成了大量代码来支持所有这些。从M1到M2,很多东西都被清除了GWT项目中可见的东西。我希望会有更多变化,但不会像M1到M2那样剧烈。
因此,最终可以将这些事件用作UI包中,以将域和UI结合在一起。 ReportListActivity.java:
public void start(Display display) {
this.registration = eventBus.addHandler(ReportRecordChanged.TYPE, new ReportChangedHandler() {
public void onReportChanged(ReportRecordChanged event) {
update(event.getWriteOperation(), event.getRecord());
}
});
super.start(display);
}
我再次向您推荐wave以获取更多信息。另外,expenses.roo演示了如何使用Places并且还有一个相当灵活的Activity框架。快乐的GWTing。
问候。
答案 1 :(得分:0)
您所指的功能目前正在大力发展(或者谷歌的人希望我们相信;))因此API和内部工作不是最终的,并且很可能在GWT 2.1的最终版本发布之前仍然有所改变(在GWT sessions期间Google IO 2010期间曾多次说过这一点。但是,您可以浏览中继中的Bikeshed sample以查看正常工作(希望如果))示例。还有2.1 branch似乎包含最新的(?)示例(以及在Google IO上承诺的食谱)。
就个人而言,我等待将你的代码转换到新的RPC模型,直到工作GWT的人说这样做是安全的;)(但是现在习惯于一般的想法肯定是一个好主意 - 它不像他们会改变一切:D)。