RequestFactory 与服务层
Posted
技术标签:
【中文标题】RequestFactory 与服务层【英文标题】:RequestFactory with service layer 【发布时间】:2011-02-08 13:58:18 【问题描述】:我需要将 GWT 与基于服务的域层一起使用,而不是使用带有 DAO 的 bean。具有 MVP 和 RequestFactory 的 GWT 2.1 架构是否适合此?还是我应该继续使用 RPC?
谢谢
【问题讨论】:
【参考方案1】:GWT 2.1.1 添加了Locator
和ServiceLocator
机制,允许您控制 RequestFactory 服务器代码如何获取对实体和服务对象实例的引用。
例如,你可以像这样声明代码
class MyService.class
// Note that this is not a static method
public void doSomething() ....;
class MyServiceLocator implements ServiceLocator
public Object getInstance(Class<?> clazz)
// Or use Guice, Spring, whatever provides instances of MyService
return new MyService();
interface MyRequestFactory extends RequestFactory
@Service(value=MyService.class, locator=MyServiceLocator.class)
interface ServiceRequest extends RequestContext
Request<Void> doSomething();
ServiceRequest myService();
如果您需要更好地控制 RequestFactory 如何与您的服务器域对象或服务代码交互,您可以将ServiceLayerDecorator
的实例注入服务层。
【讨论】:
是否有任何示例或脚手架应用程序可以演示这些功能?谢谢 Thomas Broyer 一直是为 RequestFactory 功能和文档做出贡献的非常活跃的用户。他正在撰写一系列有关 RF 的博客文章。 tbroyer.posterous.com/gwt-211-requestfactory-part-ii他还在 GWT Google Group 上发了很多帖子。 我应该在哪个包中编写 MyServiceLocator 类?在共享或服务器?我试图在共享包中这样做,但它给出了一个错误:没有源代码可用于类型 com.google.gwt.sample.server.TreeService;你忘了继承一个必需的模块吗?这可能是因为共享包不应该引用服务器包中的类。 如果 ServiceLocator 实现将在您的服务器包中,您可以使用 @ServiceName 注释,它使用字符串文字而不是类文字,专门用于支持定位器或域对象不存在的情况对 GWT 模块可见。以上是关于RequestFactory 与服务层的主要内容,如果未能解决你的问题,请参考以下文章