Tys*_*son 22 java gwt serialization rpc gwt-rpc
我收到以下异常:
com.google.gwt.user.client.rpc.SerializationException:类型'java.lang.Long'未包含在可由此SerializationPolicy序列化的类型集中,或者无法加载其Class对象.出于安全考虑,此类型不会被序列化
使用GWT 2.1和内置的Jetty服务器.根据文档,这种类型绝对是可序列化的...如何将它包含在SerializationPolicy中?
小智 28
以下是应该解决问题的链接:http: //developerlife.com/tutorials/?p = 131
用户定义的类在以下情况下是可序列化的
- 该类可分配给IsSerializable或java.io.Serializable,因为它实现了这些接口之一,或者因为它是从实现这些接口之一的超类派生的.
- 所有类的非final,非瞬态实例字段都是可序列化的
- 该类有一个公共默认(零参数)构造函数
Tys*_*son 20
需要在RPC服务中包含一个多余的方法,它将许多对象"白名单".这是因为使用泛型,GWT无法确定哪些对象可能序列化以包含在一些通用中.
我包含了所有可能需要(un)序列化为object(SerializableWhitelist
)成员的类型.我在RPC servlet对象中添加了一个方法,如:
public SerializableWhitelist junk(SerializableWhitelist l) { return null; }
值得注意的是,您需要将白名单数据类型包括为参数和返回类型,因为GWT显然维护了两个单独的序列化策略.
尝试删除war/app目录中的*.gwt.rpc文件,清理并重建.
有一点需要注意:如果可能的话,你应该避免使用long或Long,因为它们是
在GWT 上模拟的(因为没有本地Javascript长)并且非常
慢.尽可能使用int代替.