0

我们正在使用 Quartz 运行一个计划,并在 executeinternal 方法中从表中获取更新的数据,但是如何从 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返回类型为的 Method 中的查询void

任何人都可以帮助我解决这个问题。

在此先感谢,马赫什

4

1 回答 1

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);
}
于 2013-10-18T09:50:19.627 回答