一、先介紹一下Tomcat的後臺處理線程,首先是與該線程至關重要的屬性:backgroundProcessorDelay。
在每個Container啓動的時候會根據backgroupProcessorDelay來決定是否啓動ContainerBackgroundProcessor線程。
backgroupProcessorDelay作爲ContainerBase的屬性,默認爲-1,在StandardEngine裏面設置成了10,其餘的容器如StandardContext、StandardHost都仍然爲-1。
所以只有StandardEngine會啓動ContainerBackgroundProcessor線程。
ContainerBackgroudProcessor線程每隔backgroundProcessorDelay秒去執行遞歸指定自己及子容器的backgroundProcessor方法。由於backgroundProcessorDelay大於0的容器會有一個自己的ContainerBackgroudProcessor線程,所以只會執行backgroundProcessorDelay不大於0的子容器的backgroundProcessor方法。
二、利用Tomcat的後臺處理線程
作爲StandardEngine的子容器,StandardContext重寫了父類ContainerBase的backgroundProcessr方法,其中有處理Manager的後臺任務。
ManagerBase實現Manager,使用backgroudProcess處理過期的session。