隨web應用啟動而自啟動的後台線程
當前遇到一個需求:
需要在web應用啟動的時候就啟動一個線程定時的來做某項工作。
有兩種解決方法:
1.增加一個監聽器Listener來實現相關功能。
2.增加一個隨項目啟動的servlet來實現相關功能。
這裡Listener和隨項目啟動的servlet都可以隨著項目啟動而啟動,只是啟動的時序有所不同:
接下來分別實現下:
1.Listener實現:看代碼
View Code
然後需要將Listener配置到web.xml中:
<listener>
<listener-class>com.web.cloudAgent.servlet.LoadBalanceServlet</listener-class>
</listener>
2.servlet實現:
View Code
然後需要配置到web.xml中:
題外話:我遇倒的一些意外情況,在servlet中需要調用一些service,service中包含一些dao,在起初測試的時候發現service會抱錯NullException,後來看到網友的一句話:
因為你的servlet不是由spring管理的,所以spring就不能往servlet里注入對象,而你的action是spring管理的,所以可以注入成功。
所以最終我們通過spring 的上下文來獲取相應的service。具體方法如下:
//獲取當前上下文環境,spring容器
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
RegularTaskService regularTaskService = (RegularTaskService)wac.getBean("regularTaskService");
經測試,可以使用。
※SQL 中 on 條件與 where 條件的區別
※Python3 的這幾個特性
TAG:程序員小新人學習 |