Java 多次在Spring MVC中执行Quarts调度程序

Java 多次在Spring MVC中执行Quarts调度程序,java,spring,spring-mvc,quartz-scheduler,scheduling,Java,Spring,Spring Mvc,Quartz Scheduler,Scheduling,我在MVC中使用Quarts进行任务调度,我的问题是,它会对每个任务执行多次(两次)。请在下面找到配置和Java文件 文件web.xml 输出/日志 2014-05-05 15:06:53,462 - DEBUG [ FixedDelayWorker - work() - 9 ] - org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-10 has began working. 2014-05-05 1

我在MVC中使用Quarts进行任务调度,我的问题是,它会对每个任务执行多次(两次)。请在下面找到配置和Java文件

文件web.xml 输出/日志

2014-05-05 15:06:53,462  - DEBUG [ FixedDelayWorker - work() -  9 ] -    org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-10 has began working.
2014-05-05 15:06:53,462  - DEBUG [ FixedDelayWorker - work() - 10 ] - working...
2014-05-05 15:06:53,462  - DEBUG [ FixedDelayWorker - work() - 11 ] -    org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-10 has completed work.
2014-05-05 15:06:54,881  - DEBUG [ FixedDelayWorker - work() -  9 ] -    org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-10 has began working.
2014-05-05 15:06:54,882  - DEBUG [ FixedDelayWorker - work() - 10 ] - working...
2014-05-05 15:06:54,882  - DEBUG [ FixedDelayWorker - work() - 11 ] -    org.springframework.scheduling.quartz.SchedulerFactoryBean#0_Worker-10 has completed work.

我认为这可能是因为您在web.xml中包含了以下两行

<param-value>/WEB-INF/spring-servlet.xml</param-value>
/WEB-INF/spring-servlet.xml
一次作为单独的,一次用于SpringServlet定义。 这可能会创建两种不同的上下文。
我没有使用您的代码进行测试…

您的代码:

<context-param> 
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>
   <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
  </context-param>

   <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

上下文配置位置
/WEB-INF/spring-servlet.xml

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

春天
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring-servlet.xml
1.
您正在调用springservlet.xml两次

我的建议是:

<context-param> 
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
</context-param>
   <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
  </context-param>

   <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

春天
org.springframework.web.servlet.DispatcherServlet
1.
春天
/
上下文配置位置
/WEB-INF/spring-servlet.xml
org.springframework.web.context.ContextLoaderListener
或者干脆

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>
     org.springframework.web.servlet.DispatcherServlet
   </servlet-class>
   <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
 </servlet>

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

调度员
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring/dispatcher-config.xml
1.
调度员
/
希望能有帮助


如果你注意到我没有解释,因为我很难解释。我希望这些代码可以

但如果我删除了应用程序上下文,我的应用程序就不会出现:(
   <servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring-servlet.xml</param-value>
  </context-param>

   <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>
     org.springframework.web.servlet.DispatcherServlet
   </servlet-class>
   <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
 </servlet>

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