RequestFactory和过时的客户数据

时间:2013-01-27 17:12:29

标签: gwt requestfactory

我目前正在开发一个在客户端使用GWT,在服务端使用RequestFactory,在服务器端使用Apache Tomcat和Hibernate的项目。

我遇到的麻烦涉及一个服务调用,导致数据库实体的更改,因为它发生的不是同一服务返回的对象。由于客户在先前的请求中已经获得了相同的实体,因此它的客户端版本已经过时。

这实际上应该不是问题,因为客户端不再需要已更改的实体字段。

问题在于,当客户端引用同一个实体作为后续服务调用的参数时,没有任何客户端对其执行显式更改,负责在服务器端重建实体的requestfactory内部装饰器过程似乎是持久化过时的数据(通过执行对实体的Set方法的调用,这些方法由hibernate会话检测并在事务提交时安排更新)。

这个问题只是一个设计缺陷,服务调用导致的实体(仍由客户端使用)的任何更改都应该以某种方式明确刷新?我认为这不会适用于所有情况,因为同一实体可能仍会因服务器站点自动程序或其他客户端调用所执行的更改而过时。

在我看来,requestfactory应该能够检测到服务参数中传递的实体何时过时(通过比较它的客户端版本与实体的getVersion()方法返回的实体),然后发出警告异常的形式,或者至少忽略过时的数据(在我的情况下这已经足够了)。

0 个答案:

没有答案