使用WTP中的run on server來調試web程序時,按照默認的配置,會把該程序放在根目錄,即context為"/",啟動的時候會加載兩次,如果有ServletContextListener的話,里面的東西就會運行兩次;如果修改配置,通過Project->Property->Web Project Settings,把Context Root改為web project名的話,運行的時候就不會把ServletContextListener加載兩次,不過除了正常加載指定的web程序外,還會試圖加載一個不存在的context,導致拋出ClassNotFoundException異常,不過不影響使用,后來發現這是WTP的bug,不過描述的好像跟我遇到的情形不太一樣。
http://dev.eclipse.org/newslists/news.eclipse.webtools/msg09647.html
https://bugs.eclipse.org/bugs/show_bug.cgi?id=125364