0

Quartzを使用して1つのスケジュールを実行し、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クエリを実行しているため、ここで戻りデータを取得できません。ExecuteInternalvoid

誰でもこの問題で私を助けてください。

前もってありがとう、マヘシュ

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 に答える