Quartz Scheduler不会返回每3分钟执行一次的值方法

时间:2013-10-18 08:54:56

标签: java quartz-scheduler

我们正在运行一个使用Quartz的计划,并在executinternal方法中从表中获取更新的数据,但是如何从main方法访问该java对象。

以下是代码:

public static void main(String[] args) {
        // TODO Auto-generated method stub


        try {

            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            JobDetail jobDetail = new JobDetail("SlaTime", "SlaTimeGroup",
                    SlaUptimeImpl.class);
            CronTrigger cronTrigger = new CronTrigger("SlaTrigger", "SlaGroup",
                    "0/10 * 0-23 ? * *");
            scheduler.scheduleJob(jobDetail, cronTrigger);
            scheduler.start();



        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

这里我们在这个SlaUptimeImpl类中执行查询但是不能在这里获取返回数据,因为我在ExecuteInternal方法中执行了返回类型为void的查询。

在这个问题上,有人帮助我。

提前致谢, 马赫什

1 个答案:

答案 0 :(得分:1)

感谢JobBuilder#usingDataMap(),您可以为工作提供数据地图。我想你可以把一个“观察者”放到这个地图中,在作业执行时检索观察者,然后通知它结果。

安排工作时:

JobDataMap map = new JobDataMap();
map.put("myObserver", new MyObserver());

JobDetail jobDetail = JobBuilder.newJob(SlaUptimeImpl.class).withIdentity("SlaTime", "SlaTimeGroup").usingJobData(map).build();

在你的工作中:

public void execute(final JobExecutionContext context) throws JobExecutionException {

    ...

    ((MyObserver) context.getJobDetail().getJobDataMap().get("myObserver")).notify(result);
}