http://www.oschina.net/question/560995_137855?sort=default&p=3#answers
http://www.blogjava.net/hankchen/archive/2012/08/09/377735.html