Java 在春季MVC4中,我让Quartz调度器一次运行两次

Java 在春季MVC4中,我让Quartz调度器一次运行两次,java,spring,spring-mvc,quartz-scheduler,Java,Spring,Spring Mvc,Quartz Scheduler,在我的SpringMVC项目中,有一个Quartz调度器,它一次运行两次,如何修复它并一次执行一次。 我的web初始化器类所在的位置 @WebListener public class QuartzListener extends QuartzInitializerListener { @Override public void contextInitialized(ServletContextEvent sce) { super.contextInitialized(sce);

在我的SpringMVC项目中,有一个Quartz调度器,它一次运行两次,如何修复它并一次执行一次。 我的web初始化器类所在的位置

@WebListener
public class QuartzListener extends QuartzInitializerListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
    super.contextInitialized(sce);
    ServletContext ctx = sce.getServletContext();
    StdSchedulerFactory factory = (StdSchedulerFactory) ctx.getAttribute(QUARTZ_FACTORY_KEY);
    try {
        Scheduler scheduler = factory.getScheduler();
        JobDetail jobDetail = JobBuilder.newJob(TestJob.class).build();
        Trigger trigger = TriggerBuilder.newTrigger().withIdentity("simple").withSchedule(
                CronScheduleBuilder.cronSchedule("0 0/1 * 1/1 * ? *")).startNow().build();
        scheduler.scheduleJob(jobDetail, trigger);
        scheduler.start();
    } catch (Exception e) {
        ctx.log("There was an error scheduling the job.", e);
    }
  }
}
和测试班

   public class TestJob implements Job {
@Override
public void execute(final JobExecutionContext ctx) throws 
 JobExecutionException {
    System.out.println("Executing Job");
  }
 }
和web初始值设定项类

   public class WebAppInitializer extends 
      AbstractAnnotationConfigDispatcherServletInitializer{
    @Override
    protected Class<?>[] getRootConfigClasses(){
        return new Class[]{WebSecurityConfig.class};
    }
    @Override
    protected Class<?>[] getServletConfigClasses(){
        return new Class[]{WebAppConfig.class, HibernateConfiguration.class};
    }
    @Override
    protected String[] getServletMappings(){
        return new String[]{"/"};
    }
  }
在这里,我每分钟有两次“执行作业”,但我只想要一次 每分钟“执行作业”。 有人能解决吗?提前谢谢

这是你的解决方案 在作业类的顶部添加此注释

import org.quartz.DisallowConcurrentExecution;// import this
   @DisallowConcurrentExecution

如果您在集群环境中工作,则需要不同的实现。如果你需要在这里发表评论。或者,如果您的问题已解决,请接受它。

更多信息请查找GitHub链接


谢谢回复亲爱的,但不是工作。任何其他解决方案。不,它只是一个在Tomcat服务器上运行的SpringMVC项目。没有任何群集环境。我可以在spring 4.x中用一个简单的示例与您分享吗?检查您这边我又分享了一个答案,在我尝试时还添加了一个linkHello Faiz,然后每分钟“呼叫”四次,在这里我还更新了我问题中的WebAppConfig文件。你也可以看到它!谢谢你检查了github链接,看到flowya我已经运行了这个应用程序(github),运行良好。但在我的项目中我得到了两次。
import org.quartz.DisallowConcurrentExecution;// import this
   @DisallowConcurrentExecution
 //Configuration class
    @Configuration
    @EnableWebMvc
    @EnableScheduling
    @ComponentScan(basePackages = { CommonConstants.BASE_PACKAGE })
    public class WebMvcConfig {


            }

    //create a service method like this
     @Scheduled(cron = "0 0/1 * 1/1 * ?")
            public void schedulerCall()
            {
                System.out.println("Calling");
            }