2008-06-26

今天早上看了下cglib和bcel。
本来是这样的,我有很多个普通的类,它们有一些public的成员变量。但是没有对应的getter/setter。所以如果用jdk的bean工具去查properties,就找不到这些变量。而我需要在axis2中把这些类型认做pojo作为 web service的Method中的参数。我首先的想法是,可否通过cglib这样的库动态的给原来的类添加几个get/set函数。发现用cglib或者bcel创建一个新的java bean class是很容易的。然而,我的要求,是不可能被满足的。因为据说java不允许动态的给一个类添加方法。So,我彻底的放弃了这个念头。只好根据现有的类生成新的类,然后尝试来回转换。
晚上回来想给新博客添加rss的功能。由于整个web的表现是在struts2上构建的。所以本来首先想用struts2的一个rss plugin(Rome RSS-Atom Plugin)来生成rss.但是发现对方网站实在是简陋的可以,而且找不到任何文档。想想算了,还是自己做吧。

首先有两个考虑

  1. 用log4j从头开始生xml,然后输出到一个stream。然后把struts的result type设置成stream,这样输出到浏览器。
  2. 用freemaker写一个模板。然后就像写普通网页一样,挨个填空。
  3. 把对象从数据库中取出后就交给xstream输出,然后写一个xslt转成rss格式的xml.

后来采用了第2条,因为觉得比较简单。折腾了一会儿,总算把rss2弄完了。明个儿有空了再给atom写一个ftl模板就行了。

struts2的url标签比较让我郁闷的是,它生成的仅仅是一个路径。不包含主机名、端口号等信息。而rss中要求写的是一个以协议名开头的完全的url。于是我只好去HttpServletRequest对象中找主机名、端口号然后拼起来。有谁知道什么好的办法吗?

嗯,下面最想做的就是给google提供sitemap。不过目前还没有具体的想法,不知道该怎么做。
还有一个比较急的是添加评论的页面还没有做。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥