Bra*_*rad 5 java gwt gwt2 requestfactory autobean
我的GWT应用程序加载时首先要做的是通过RequestFactory从服务器请求当前登录用户.这会阻止,因为我需要用户的属性才能知道如何继续.这只需要<500毫秒,但在此期间应用程序被阻止真的让我感到很恼火.生成jsp时,我已经在服务器上安装了User,那么为什么不将序列化的User添加到jsp中并完全消除这个请求呢?
我有两个问题阻止我这样做:
我还没有找到一个做好#1的好方法.这个逻辑似乎埋没在ServiceLayerDecorator中,没有一种简单的方法可以隔离?我可能在这里错了.
第二个似乎通过ProxySerializer更容易但是当我在服务器上时如何获得requestfactory?你不能GWT.create
在服务器上打电话.
我一直在研究AutoBeans,但这并没有处理上面的#1.我的UserProxy引用了我想要维护的其他EntityProxy的集合.
如果为代理创建AutoBeanFactory,则可以使用AutoBeans:
将User转换为UserProxy:
创建服务器端RequestFactory
并调用相同的普通请求.响应将包含UserProxy
(但在服务器上).
要序列化UserProxy:
AutoBean<UserProxy> bean = AutoBeanUtils.getAutoBean(receivedUserProxy);
String json = AutoBeanCodex.encode(bean).getPayload();
要在客户端上反序列化UserProxy:
AutoBean<UserProxy> bean = AutoBeanCodex.decode(userAutoBeanFactory, UserProxy.class, json);
在服务器上创建进程内RequestFactory(教程):
public static <T extends RequestFactory> T create( Class<T> requestFactoryClass ) {
ServiceLayer serviceLayer = ServiceLayer.create();
SimpleRequestProcessor processor = new SimpleRequestProcessor( serviceLayer );
T factory = RequestFactorySource.create( requestFactoryClass );
factory.initialize( new SimpleEventBus(), new InProcessRequestTransport(processor) );
return factory;
}
Run Code Online (Sandbox Code Playgroud)
您无法在服务器上(或从任何真正的 JVM)调用 GWT.create,但在许多情况下,您可以调用专为服务器使用而设计的 JVM 兼容方法。在这种情况下,请看一下RequestFactorySource.create
。
让服务器从自身读取并使用 RequestFactory 打印数据可能有点混乱 - 这是一个演示示例,说明了它是如何工作的(使用 gwt 2.4,主分支在 2.3 左右有相同的东西)https : //github.com/niloc132/tvguide-sample-parent/blob/gwt-2.4.0/tvguide-client/src/main/java/com/acme/gwt/server/TvViewerJsonBootstrap.java - 不太一样你在后面,但也许可以使用同样的想法来填充代理存储中的字符串,该字符串可以在客户端中读取(参见此处https://github.com/niloc132/tvguide-sample-parent/blob/ gwt-2.4.0/tvguide-client/src/main/java/com/acme/gwt/client/TvGuide.java)。
基本思想是创建一个请求(包括 ids、调用和 with() 参数,以便代理构建器以一致的方式生成所有正确的部分),并将其传递到实例中SimpleRequestProcessor
,然后该实例将通过服务器部分运行它通常会的。(任何实体管理系统可能仍然应该缓存实体以避免额外的查找,否则您需要对 SRP 内部不做的一些工作进行建模。) 包装了ProxySerializer
,ProxyStore
期望具有从服务器发送的完整 RF 消息,因此需要正确地完成相当多的消息簿记。
归档时间: |
|
查看次数: |
2203 次 |
最近记录: |