对相同源代码的第二次编译将生成不同的gwt.rpc文件集
我想跟进这个问题。简言之,当我从托管浏览器执行RPC时,该调用在服务器上失败,出现异常对相同源代码的第二次编译将生成不同的gwt.rpc文件集,gwt,collections,compilation,Gwt,Collections,Compilation,我想跟进这个问题。简言之,当我从托管浏览器执行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: WARNI
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和yyyy.gwt.rpc文件必须相同。(其中xxxxx和yyyy是长数字,如84EC7BA65AF8175BAA99B4777FDE163。)
目前我有两个版本的项目
- 一个由GWT1.7编译的旧项目,它不会遇到中所述的托管浏览器问题
- 由GWT2.0.4编译的新项目。这个新项目是以旧项目为基础的。此项目存在托管浏览器问题
class Data implements IsSerializable {
List<IsSerializable> data;
...
}
类数据实现可序列化{
列出数据;
...
}
List<IsSerializable> data;
列表数据;
传输数据您需要阅读更多有关GWT序列化策略的内容: 通常,除非您直接对服务器执行高级rpc调用,否则您不会与.rpc文件混合 您的可序列化对象:
class Data implements IsSerializable {
List<IsSerializable> data;
...
}
类数据实现可序列化{
列出数据;
...
}
如果以下所有条件均适用,则用户定义的类是可序列化的:
它可以分配给IsSerializable或Serializable,这是因为它直接实现了这些接口中的一个,或者是因为它派生自一个实现这些接口的超类
所有非最终、非临时实例字段本身都是可序列化的,并且
从GWT1.5开始,它必须有一个默认(零参数)构造函数(带有任何访问修饰符),或者根本没有构造函数
因此,您可能应该有如下内容:
class Data implements IsSerializable {
List<YOUR_TYPE> data;
...
}
类数据实现可序列化{
列出数据;
...
}
您的列表模板是一种类型,您没有设置“IsSerializable”。。。应该是这样的:
List<int> data;
列表数据;