在執行
scheduler.scheduleJob(job, trigger);
時出現:
RROR JobRunShell - Job group1.server.client.loginobserver.BackupGpBaseDataObser
ver@6909db threw an unhandled Exception:
java.lang.NullPointerException
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.j
ava:557)
後來發現原來呼叫預設的
_scheduler = StdSchedulerFactory.getDefaultScheduler();
等同使用quartz.properties 此設定檔中的資料,
而每一個設定檔中的資料只能使用一次,因此若需建立第二個schedule,則需使用不同的設定檔:
- 建立新的properties設定檔:"backup.quartz.properties"
org.quartz.scheduler.instanceName = MyBackupScheduler org.quartz.threadPool.threadCount = 3 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
- 將建立schedule code改為:
StdSchedulerFactory factory = new StdSchedulerFactory(); factory.initialize("backup.quartz.properties"); _scheduler = factory.getScheduler(); _scheduler.start();
StdSchedulerFactory factory = new StdSchedulerFactory(); factory.initialize();//default use quartz.properties _scheduler = factory.getScheduler(); _scheduler.start();
不過我搞不太懂為什麼問題出在【重複Schedule設定】,卻會拋出NullException這種這麼不明確的錯誤呢....
參考:Novice question: how do I get to PropertySettingFactory?
沒有留言:
張貼留言