1. 程式人生 > >解決Spring task 重複執行兩次

解決Spring task 重複執行兩次

spring task的建立方法http://blog.csdn.net/qq_22585453/article/details/53635901

重複執行的的解決方案:Tomcat伺服器的問題,修改conf目錄下的server.xml。修改節點Host,將docBase屬性設定為空("")即可

-------如果你只想解決問題,看上面的 ↑ 就夠了------------

一些雜七雜八的分析如下:

如圖,重複輸出了兩次,同一時間,計劃任務被例項兩次。

-----紅色字型是百度找到的一篇文章:

在web應用中,web.xml經常出現如下的配置:

  1. <!--全域性Servlet排程配置 -->
  2.     <servlet>
  3.         <!--若設定 servlet-name為[name] -->
  4.         <!--則DispatcherServlet在例項化後會自動載入[name]-servlet.xml -->
  5.         <servlet-name>spring</servlet-name>
  6.         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  7.         <
    init-param>
  8.             <param-name>contextConfigLocation</param-name>
  9.             <param-value>classpath:servletContext.xml</param-value>
  10.         </init-param>
  11.         <!--隨伺服器一同啟動 -->
  12.         <load-on-startup>1</load-on-startup>
  13.     </servlet>
  14.     <
    servlet-mapping>
  15.         <servlet-name>spring</servlet-name>
  16.         <url-pattern>*.do</url-pattern>
  17.     </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>

效果圖↓


完美解決