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 添加了LocatorServiceLocator 机制,允许您控制 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 与服务层的主要内容,如果未能解决你的问题,请参考以下文章

业务层与服务层的服务引用

将服务层与验证层分离

将数据访问层与服务层分开是否很好[关闭]

GWT RequestFactory 并将服务器端更改传播到客户端

实现服务层方法的指南

Jalo 层与服务层