Archive for January, 2008

permalink和302

Saturday, January 5th, 2008

permalink是Blogs 2.0里新添加的功能,和WordPress的”slug“很类似,允许博客作者为自己的帖子指定一个有意义的、永久的URL。

对于客户端来说,permalink的存在,只有在支持HTTP 302的前提下才更有价值。因为很多的permalink或者一些feed的订阅地址,会像public API一样,一旦发布出去就应该长时间保持有效,即使需要修改也必须同时用302重定向的方法支持老的URL。最近我在整理ThunderBird里订阅的feed列表,发现有不少feed(都是一些大牌儿网站的feed)已经失效了,而用浏览器访问这些feed则可以正常阅读,究其原因就在于ThunderBird不支持HTTP 302重定向,人家feed地址一改就歇菜了。

对于企业内部用户,feed  reader面对的是配置了各种策略(包括安全策略)的部署环境,重定向几乎不能避免,对它的支持格外重要。

iBatis 2.1.5升级至2.3问题一则

Saturday, January 5th, 2008

Lotus Connections 2.0后台的O/R mapping将从iBatis 2.1.5升级到2.3,今天在测试的时候发现部署iBatis 2.3后导致Blogs出现大量exception,大部分功能失效。然而根据文档,2.3的API是向下兼容的,理应不该出现此类问题。

做了一番调查,发现原因如下:当iBatis拿到结果集后调用Java pojo的setter方法来保存对象集合,而如果一个pojo存在两个同名但参数类型不同的setter时,2.3版本iBatis会调用到错误的方法。以Blogs为例,其中一个pojo有两个同名的setter方法,一个参数类型是java.util.Set,另外一个是java.util.List。iBatis会错误的调用”setXXX(Set mydata)“而不是”setXXX(List mydata)“方法,因为iBatis的O/R映射集合类型是不支持java.util.Set的,所以出现argument type mismatch的错误。

通过修改pojo,消除同名setter方法可以解决升级到2.3后的这个问题。