http://www.blogjava.net/zJun/archive/2007/01/24/95747.html http://www.oschina.net/question/54953_45536