http://www.blogjava.net/zJun/archive/2006/03/21/36724.html http://www.blogjava.net/zJun/archive/2009/05/13/40585.html#270457