Java 石英触发同一实例两次

Java 石英触发同一实例两次,java,quartz-scheduler,Java,Quartz Scheduler,我们在Java类中使用DisallowConcurrentExecutionAttribute注释来防止多个实例的并发执行,但是,看起来Quartz已经同时触发了两次相同的实例。请解决此问题,并向我们提供更多信息,如果是错误,请修复此问题 @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false) public void execute(final JobExecutionContext jobEx

我们在Java类中使用
DisallowConcurrentExecutionAttribute
注释来防止多个实例的并发执行,但是,看起来Quartz已经同时触发了两次相同的实例。请解决此问题,并向我们提供更多信息,如果是错误,请修复此问题

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false)
public void execute(final JobExecutionContext jobExecutionContext) throws JobExecutionException {
    logger.log(Log.DEBUG, "++++ Quartz JOB BatchJobDetector started");
    try {
        this.setJobExecutionContext(jobExecutionContext);
        boolean triggerNextJob = true;
        while (triggerNextJob) {
            TriggeredBatchProcessDTO triggeredBatchProcessDTO = getNextJob(jobExecutionContext, 0);
            if (triggeredBatchProcessDTO != null) {

                triggerJobImmediatly(triggeredBatchProcessDTO.getId(), jobExecutionContext);
                triggeredBatchProcessDTO.setState(StatusType.RUNNING);  
                triggeredBatchProcessDTO.setProcessDtTm(triggeredBatchProcessDTO.getProcessDtTm());//CRGRO022
                updateTriggeredBatchProcessDTO(triggeredBatchProcessDTO);

            } else {
                triggerNextJob = false;
            }
        }
    } catch (final UnexpectedRuntimeException e) {
        logger.log(Log.ERROR, "Error during execution of TriggeredBatchProcessDetectorJob: " + e.getMessage(), e);
        throw e;
    } catch (final Throwable t) {
        throw new UnexpectedRuntimeException(CoreExceptionId.RUN_0001_UNEXPECTED_EXCEPTION,
            new Object[] { "TriggeredBatchProcessDetectorJob error" }, t);
    }
    logger.log(Log.DEBUG, "++++ Quartz JOB BatchDetector finished");
}

您需要通过属性正确设置quartz,才能将其运行到集群模式,我不确定您是否还应该使用
@PersistJobDataAfterExecution
注释。我使用的是集群quartz,没有任何问题,也没有任何非集群作业实现问题
. 您需要向我们展示您的配置--并提供quartz lib版本

如果没有版本信息、触发问题的代码片段等,帮助您有点困难。。。如果你想让别人花时间回答你的问题,请加强提问。Cheers我们也在使用这个注释@PersistJobDataAfterExecution,我对quartz是完全陌生的,你能不能更具体一点,或者解释一下这里的配置到底是什么意思,quartz版本是2.2.1如果我们谈论的是属性,我的意思是,例如:org.quartz.jobStore.isClustered=true org.quartz.scheduler.instanceName=MyClusteredScheduler org.quartz.scheduler.instanceId=AUTO,我指的是数据库或JEE容器上的配置