我正在尝试开发一个 Spring Roo/GWT 应用程序,该应用程序在 Roo 中具有最新的 GWT 集成。
让脚手架工作非常简单,但我并不真正了解 RPC 是如何在那里工作的。
你们中的某个人能否提供一个简单的示例,如何在 Spring Roo 和 GWT 中做一个简单的服务来连接客户端/服务器。
一开始会很有帮助,因为我找不到任何资源。
谢谢和问候,弗洛
我正在尝试开发一个 Spring Roo/GWT 应用程序,该应用程序在 Roo 中具有最新的 GWT 集成。
让脚手架工作非常简单,但我并不真正了解 RPC 是如何在那里工作的。
你们中的某个人能否提供一个简单的示例,如何在 Spring Roo 和 GWT 中做一个简单的服务来连接客户端/服务器。
一开始会很有帮助,因为我找不到任何资源。
谢谢和问候,弗洛
弗洛,
不确定您是否完全使用 google wave,但这似乎是一个可以跟上当前努力的地方。具体来说,这个 wave 对公众开放: RequestFactory Wave
它涵盖了有关 RequestFactory API 的详细信息(新兴的详细信息)。
基本思想是服务器端和客户端都需要您的域模型对象。使用休眠可能会导致类文件出现问题,人们最终拥有两组模型对象,并使用自定义 GWT-RPC 在客户端和服务器端模型对象之间进行服务器请求和编组/取消编组。不是一个理想的解决方案。即使可以使用相同的模型对象,RPC 的开销也是一个拖累。
输入 RequestFactory,我们看到谷歌工程师可能得到了他们应得的报酬。查看从 .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 联系在一起。报告列表活动.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 以获取更多信息。另外,费用.roo 演示了如何使用 Places,并且还有一个相当漂亮的 Activity 框架。快乐的 GWTing。
问候。
您所指的功能目前正在大力开发中(或者 Google 的人希望我们相信 ;))所以 API 和内部工作不是最终版本,很可能在 GWT 2.1 最终版本之前仍会发生变化(这是在Google IO 2010期间的GWT 会议期间曾说过几次)。但是,您可以浏览后备箱中的Bikeshed 示例以查看一个有效的(希望 ;))示例。还有一个2.1 分支,它似乎包含最新的 (?) 示例(以及 Google IO 上承诺的食谱)。
就个人而言,我会等待将您的代码切换到新的 RPC 模型,直到从事 GWT 工作的人说这样做是安全的;)(但现在习惯一般想法绝对是一个好主意 - 他们不会改变一切:D)。