Java 在春季MVC4中,我让Quartz调度器一次运行两次
在我的SpringMVC项目中,有一个Quartz调度器,它一次运行两次,如何修复它并一次执行一次。 我的web初始化器类所在的位置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);
@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");
}