2015-10-05 3 views
0

Я делаю весенний проект и регистрирую планировщик, , но четыре процесса выполняются перекрывающимися.spring @Scheduled 4 task overlap

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="couchLogServer" version="2.5"> 
    <display-name>couchLogServer</display-name> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 


    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext_SqlMapClient.xml</param-value> 
    </context-param> 
    <filter> 
    <filter-name>encodingFilter</filter-name> 
    <filter-class> 
      org.springframework.web.filter.CharacterEncodingFilter 
     </filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
    </filter> 
    <filter-mapping> 
    <filter-name>encodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 
    <servlet> 
    <servlet-name>couchLogServer</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>couchLogServer</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 



</web-app> 

server.xml

<Engine defaultHost="localhost" name="Catalina"> 

     <Host appBase="webapps" autoDeploy="false" deployOnStartup="false" name="localhost" unpackWARs="true"> 

     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/> 

     <Context docBase="ROOT" path="/couchLogServer" reloadable="true" source="org.eclipse.jst.jee.server:couchLogServer"/></Host> 
    </Engine> 

Как я могу планировать только одну задачу? Пожалуйста, помогите мне; Мне нужен только один планировщик задач.

ответ

0

Попробуйте link. У этого есть хорошие примеры. В конфигурации .xml вы можете сделать так:

<context:component-scan base-package="com.package.location" /> 

<task:scheduled-tasks scheduler="Scheduler"> 
    <task:scheduled ref="yourBean" method="yourMethod" fixed-delay="5000" /> 
</task:scheduled-tasks> 


<task:scheduler id="myScheduler"/> 

Это будет выполняться метод «» yourMethod каждые 5 секунд. Он использует собственный поток, поэтому не нужно беспокоиться о перекрытии. «Com.package.location» - это адрес пакета, в котором находится ваш класс.

Смежные вопросы