2017-08-22 9 views
0

ジョブを一度スケジューリングするためにjava quartzスケジューラを使用しています。ジョブを実装するExecutorクラスがあり、ジョブの実行メソッドをオーバーライドします。ジョブの実行は正常に動作します。しかし、私はジョブ実行の結果をExecutorクラスを呼び出したクラスに送る必要があります。同じようにする方法がわからない。返される結果は内部クラスのObjectです。使用するquartz imのバージョンは1.6.6クォーツスケジューラジョブ実行結果をUIに表示する方法

サーブレットコードです。サーブレット

jDetail = new JobDetail(sched.getProjectName(), Executor.class); 
       jDetail.getJobDataMap().put("usrName",schedule.getUsername()); 
       jDetail.getJobDataMap().put("prjName", sched.getProjectName()); 
       jDetail.getJobDataMap().put("srcSchema",srcData); 
       jDetail.getJobDataMap().put("tgtSchema",targetData); 
       jDetail.getJobDataMap().put("mapDetails",mapData); 
cronTrigger = new CronTrigger(sched.getUsername(), sched.getProjectName(), sched.getCronExpression()) ; 
    SchedulerFactory sf=new StdSchedulerFactory(); 
    Scheduler sched=sf.getScheduler(); 
    sched.scheduleJob(jDetail, cronTrigger); 
    sched.start(); 

のスケジュール方法私はグーグルでチェックしていると、彼らは)JobExecutionContext.setResult(に結果を設定する を指定しています。しかし、私はどのように結果を取得するか分からない。

これに関するお手伝いがあります。前もって感謝します。

+0

どのようにExecutorクラスを呼び出すのですか? – NikNik

+0

ServletからJobDetailコンストラクタ経由 – vr3w3c9

+0

いくつかのコードを追加できますか? – NikNik

答えて

0

あなたのJob.execute方法であなたの結果を書き込むことができます。

public void execute(JobExecutionContext context) throws JobExecutionException { 
    context.setResult("TestResult"); 
} 

、あなたはそれを読むことができます:

for(JobExecutionContext jobContext : scheduler.getCurrentlyExecutingJobs()){ 
    jobContext.getResult(); 
} 

をしかし、なぜあなたはそこにそれを必要とする必要がありますか? :)

関連する問題