【发布时间】:2011-11-26 07:15:09
【问题描述】:
我想跟进这个问题gwt-serialization-policy-hosted-mode-out-of-sync。简而言之 - 当我从托管浏览器执行 RPC 时,此调用在服务器上失败,但出现异常。
INFO: GwtRpcEventSrvc: ERROR: The serialization policy file '/84EC7BA65AF8175BAA99B47877FDE163.gwt.rpc' was not found; did you forget to include it in this deployment?
SEVERE: GwtRpcEventSrvc: WARNING: Failed to get the SerializationPolicy '84EC7BA65AF8175BAA99B47877FDE163' for module 'http://host:19980/MYAPP/'; a legacy, 1.3.3 compatible, serialization policy will be used. Youmay experience SerializationExceptions as a result.
SEVERE: Exception while dispatching incoming RPC call
当我从浏览器执行相同的 RPC 时,请求在服务器上成功执行。
此外,我观察到 GWT 编译器的一个奇怪行为可能会导致托管浏览器模式出现问题。
我假设当我对完全相同的代码进行两次后续编译时,各个编译的结果应该是相同的。我的意思是至少 xxxxx.html 和 yyyyy.gwt.rpc 文件必须相同。 (其中 xxxxx 和 yyyyy 是长数字,例如 84EC7BA65AF8175BAA99B47877FDE163。)
目前我有两个版本的项目。
- 一个由 GWT 1.7 编译的旧项目,没有遇到gwt-serialization-policy-hosted-mode-out-of-sync 中描述的托管浏览器问题
- 由 GWT 2.0.4 编译的新项目。这个新项目是基于旧项目。此项目存在托管浏览器问题。
案例 1: GWT 1.7 的旧项目
我使用了由 GWT 1.7 编译的旧项目。我做了两次编译,并比较了编译工件。 gwt.rpc 文件相同,而 html 文件具有不同的内容和名称。由于 gwt.rpc 文件始终相同,因此托管浏览器没有问题。
案例 2: 使用 GWT 2.0.4 的新项目
我编译了两次,gwt.rpc 和 html 文件都不一样。因此,由于缺少 gwt.rpc 文件,托管浏览器中的 RPC 调用在服务器上失败。
案例 3: 使用 GWT 2.0.4 的旧项目
我编译了两次,gwt.rpc 和 html 文件都不一样。因此,由于缺少 gwt.rpc 文件,托管浏览器中的 RPC 调用在服务器上失败。
我做了一些调查,发现当我注释掉从服务器传输到客户端的数据类中的数据成员时,编译的文件开始相同。
class Data implements IsSerializable {
List<IsSerializable> data;
...
}
- 我想在新项目中做同样的事情,但似乎有很多类要修改。因此,随着项目的发展,问题也越来越大。
-
我不知道用什么代替
List<IsSerializable> data;传输数据。
【问题讨论】:
标签: gwt collections compilation