2017-02-07 8 views
1

私がクォーツschedulershutdown()メソッドを呼び出さないとどうなりますか?私がシャットダウンしないとどうなりますか()クォーツスケジューラ

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); 

      JobDetail job = newJob(NotificationCronJob.class).withIdentity("notificationJob1", "notificationGroup1").build(); 

      CronTrigger cronTriggerSunday = newTrigger().withIdentity("notificationTrigger1", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.SUNDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerMonday = newTrigger().withIdentity("notificationTrigger2", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.MONDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerTuesday = newTrigger().withIdentity("notificationTrigger3", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.TUESDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerWednesday = newTrigger().withIdentity("notificationTrigger4", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.WEDENSDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerThursday = newTrigger().withIdentity("notificationTrigger5", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.THURSDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerFriday = newTrigger().withIdentity("notificationTrigger6", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.FRIDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 
      CronTrigger cronTriggerSaturday = newTrigger().withIdentity("notificationTrigger7", "notificationGroup1") 
        .withSchedule(cronSchedule(Config.SATURDAY_NOTIFY)) 
        .forJob(job) 
        .build(); 

      scheduler.scheduleJob(job, cronTriggerSunday); 
      scheduler.scheduleJob(cronTriggerMonday); 
      scheduler.rescheduleJob(cronTriggerMonday.getKey(), cronTriggerMonday); 
      scheduler.scheduleJob(cronTriggerTuesday); 
      scheduler.scheduleJob(cronTriggerWednesday); 
      scheduler.scheduleJob(cronTriggerThursday); 
      scheduler.scheduleJob(cronTriggerFriday); 
      scheduler.scheduleJob(cronTriggerSaturday); 

      scheduler.start(); 

Config.DAYは例0 0 9 ? * 1実行フォアのcron式は各日曜日午前9時です:

は、私は一日の異なる時間に毎日実行する必要があります仕事をしています。

問題はスケジューラーをシャットダウンしてもジョブが実行されないため、起動して実行するだけです。しかし、それはいくつかの種類のスレッド問題のメモリリークやメモリリークの原因になるかどうか、私はこれが十分な解決策であるかどうかわからないことに懸念しています。次のように私の石英プロパティは次のとおりです。私は最終的に達成するために必要なもの

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX 

org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.MSSQLDelegate 
org.quartz.jobStore.dataSource = myDS 
org.quartz.dataSource.myDS.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver 
org.quartz.dataSource.myDS.URL = jdbc:sqlserver://localhost;databaseName=myDB 
org.quartz.dataSource.myDS.user = myUser 
org.quartz.dataSource.myDS.password = myPassword 
org.quartz.dataSource.myDS.maxConnections = 5 
org.quartz.jobStore.tablePrefix = QRTZ_ 

は、定義された時間にジョブを実行し、スケジューリングは、アプリケーションを再起動せずに変更可能でなければなりませんアプリケーションです。

答えて

2

クォーツスケジューラは、アプリケーションの実行中に「シャットダウン」メソッドを呼び出さないでください。メモリリークなどの問題が見つかった場合は、Quartzコミュニティに問題を発行することができます。

'シャットダウン'メソッドが呼び出された場合、 'スタート'メソッドを再度呼び出しても、クォーツスケジューラは再起動されません。

以下のURLはQuartzのドキュメントを参照してください。

+0

ありがとう@hiroyukik次にスケジューラを開始して何が起こるかを見てみましょう。 – TheLearner

関連する問題