石英非国家工作坚持国家

时间:2015-07-24 14:46:39

标签: java quartz-scheduler

我正在学习Quartz Job Scheduler框架(使用jboss 5.1中的1.5.2版)。我试图理解有状态和无状态工作之间的区别。

据记载,在作业执行期间在JobDataMap中所做的任何更改都不会在下次执行非有状态作业的作业时保留,但在有状态的作业中也会保留相同的内容。

为了测试上面的内容,我编写了一个非有状态的作业,在执行作业期间正在修改JobDataMap。根据上述逻辑,在下次执行作业期间不应保留或提供更改。 但是,似乎确实通过执行作业来保持更改。

这是工作班:

 public class QuartzTask implements Job{

    @Override
    public void execute(JobExecutionContext arg) throws JobExecutionException {
        // TODO Auto-generated method stub
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
        System.out.println(arg.getTrigger().getName()+"  task executed:"+timeStamp);

        System.out.println("before put:"+arg.getMergedJobDataMap().get("data"));
        arg.getJobDetail().getJobDataMap().put("data", "added");
        System.out.println("after put:"+arg.getMergedJobDataMap().get("data"));         
    }    
}

如果我执行上述作业2次,则输出应如下所示:

  放入之前

:null

     

之后:添加

     放入之前

:null

     

之后:添加

但是,输出看起来像这样:

  放入之前

:null

     

之后:添加

     放入之前

:添加

     

之后:添加

我在这里错过了什么导致这种行为?

0 个答案:

没有答案