2017-05-03 7 views
3
public static void main(String[] test) { 
     try { 

      JobKey jobKeyA = new JobKey("JobAssignVehicleDailyrideFixedVehicle", "group1"); 
      JobDetail jobA = JobBuilder.newJob(JobAssignVehicleDailyrideFixedVehicle.class) 
        .withIdentity(jobKeyA).build(); 
      Trigger trigger1 = TriggerBuilder 
        .newTrigger() 
        .withIdentity("Trigger1", "group1") 
        .withSchedule(
          CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) 
        .build(); 
        scheduler = new StdSchedulerFactory().getScheduler(); 
      scheduler.start(); 
      scheduler.scheduleJob(jobA, trigger1); 
      } catch (SchedulerException e) { 
      logger.error(e); 
     } 
    } 

このメソッドをjarファイルからメインクラスから実行しています。 javaプロセスを終了するだけで、quartzを適切にシャットダウンできます。 現在実行中の石英のスケジューラでシャットダウンメソッドを呼び出す方法はありますかメインメソッドから実行している石英スケジューラを外部で停止する方法

+0

他のスレッドで 'new StdSchedulerFactory()。getScheduler()'を使って、メインスレッドで開始したスケジューラへの参照を取得しようとしましたか? –

+0

はい、感謝しましたluc14n0 –

答えて

3

その他のスレッドにnew StdSchedulerFactory().getScheduler()を使用して、メインスレッドで開始されたスケジューラへの参照を取得します。

これはなぜ機能しますか? の呼び出しStdSchedulerFactory#getScheduler両方の工場インスタンスで同じSchedulerRepositoryの実行中のすべての石英スケジューラのマップを含むシングルトン(この場合はデフォルトのスケジューラです)を使用します。

関連する問題