解決Spring task 重複執行兩次
spring task的建立方法http://blog.csdn.net/qq_22585453/article/details/53635901
重複執行的的解決方案:Tomcat伺服器的問題,修改conf目錄下的server.xml。修改節點Host,將docBase屬性設定為空("")即可
-------如果你只想解決問題,看上面的 ↑ 就夠了------------
一些雜七雜八的分析如下:
如圖,重複輸出了兩次,同一時間,計劃任務被例項兩次。
-----紅色字型是百度找到的一篇文章:
在web應用中,web.xml經常出現如下的配置:
-
<!--全域性Servlet排程配置 -->
- <servlet>
- <!--若設定 servlet-name為[name] -->
- <!--則DispatcherServlet在例項化後會自動載入[name]-servlet.xml -->
- <servlet-name>spring</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:servletContext.xml</param-value>
- </init-param>
- <!--隨伺服器一同啟動 -->
- <load-on-startup>1</load-on-startup>
- </servlet>
-
<
- <servlet-name>spring</servlet-name>
- <url-pattern>*.do</url-pattern>
- </servlet-mapping>
要載入類路徑下的servletContext.xml,如果不指定,則會按照註釋中所描述地那樣自動載入spring-servlet.xml
無論是servletContext.xml還是applicationContext*.xml都可以按照<beans>...<bean id="XXX" class="XXX" />...</beans>這樣的形式來配置。
問題來了,有時候不注重物件初始化的分類,尤其是使用<context:component-scan base-package="controller" />這樣的包掃描形式統一初始化,
很容易造成滿足條件的物件被初始化兩次,那麼在計劃任務的時候被執行兩次也就不奇怪了。其實說來說去,還是要提醒大家,不同的配置檔案其作用是不一樣的,
不要將所有的初始化操作都放到一個配置檔案中,更不要重複配置。不僅浪費資源,還很容易導致莫名其妙的故障。
紅色字型部分是百度找的,感覺挺有道理的,所以copy一下湊個字數,免得文章字數太少了不好看。
之後又百度了半天后,有相關文章提到過是Tomcat伺服器的問題,修改conf目錄下的server.xml。修改節點Host,將docBase屬性設定為空("")即可,如下所示:
<Context
docBase="" path="/cert" reloadable="true" source="org.eclipse.jst.jee.server:ct"/></Host>
效果圖↓