论坛首页 Web前端技术论坛

讨厌的gwt SerializationException

浏览 2218 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-11  
GWT
今天调试在调试GWT做的应用得客户端,为了优化生成的代码,自以为得意的给service api的方法增加了@gwt.typeArgs.结果出现了SerializationException,搞了一天(下午--半夜)才搞定。郁闷!

半夜了,也睡不着觉了,总结一下SerializationException产生的原因,与大家共勉。

1。客户端UI依赖的java code和服务器端的不一致。

一般情况下,客户端和服务器端都会使用相同的业务模型,或者pojo,或者说是DTO更标准些,因为这些对象就是从服务器端传递到客户端的。如果这些代码两边使用的不一致,客户端就会报错了。客户段按照编译好的js里面定义的对象格式来解析服务器端传递过来序列化过的对象,如果多个属性或者少个,客户端可不会忽略掉,报个错提示你一下。

常见提示:the application is out of date(host mode)

2.某些属性不能序列化
gwt只是对jdk类的一个子集提供支持,除此之外都是不能直接序列化的。比如java.sql.Date,我们在使用hibernate从数据库中取到的date都是java.sql.Date的实例,而gwt只认识java.util.Date.该异常经常发生在服务器端,不能序列化嘛。当然,客户端的有这些类的话,呵呵,编译都不会过的。

3.不知其所以然的情况。类似上面我遇到的问题。我检查代码都不知道看了多少遍,客户端和服务器段代码绝对一致,所有的属性均可序列化 。而且奇怪的是,同样的一个List<MyObject>的list,有的可以,有的就是不行。最后解决办法,关机,重启,然后在测试的时候顺手把@gwt.typeArgs都去掉了。OK,终于好了!
   发表时间:2008-12-17   最后修改:2008-12-17
挑个刺哦,GWT 1.5已经支持java.sql.Date了,呵呵
http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=ReleaseNotes_1_5_JreEmulation
0 请登录后投票
   发表时间:2008-12-17  
edokeh 写道


oh.Sorry
最近一直采用1.4做开发,这个改变没有注意。1.5还是有好多方便的地方啊
0 请登录后投票
   发表时间:2008-12-18  
是啊,尤其是1.5支持泛型让我热泪盈眶啊
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics