SchedulerFactory启动时无法读外部Properties
当前在做一个定时发邮件的项目.
在启动tomcat时,用timetask初始化schedulerFactory.
但在读配置之后.得到的schedule都为默认的名字.我想根据我给的那个id取得schedule.
但是当发布完成后 页面上新增一个schedule却是可以的.代码检查了 也没发现有什么问题.
希望有高手指点
//////正常保存时候存在id///////////////
// 新規状態
Properties props = new Properties();
props.put("org.quartz.scheduler.instanceName", mailDetailForm.getScheduleId());
props.put(StdSchedulerFactory.PROP_THREAD_POOL_CLASS,"org.quartz.simpl.SimpleThreadPool");
props.put("org.quartz.threadPool.threadCount", "1");
ImpSchedulerFactory newFactory = new ImpSchedulerFactory(Long
.valueOf(mailDetailForm.getScheduleId()));
newFactory.initialize(props);
ScheduleMail scheduleMail = this.getSchedule(newFactory.getId());
List<MailForm> sendAddressList = initSendMailList(newFactory
.getId());
// Retrieve a scheduler from schedule factory
Scheduler newScheduler = newFactory.getScheduler();
//////////////启动时run方法///////////
public class CheckSchMail extends TimerTask{
public static List<ImpSchedulerFactory> factoryList;
private SendMailService sendMailService;
@Autowired
public void setSendMailService(SendMailService sendMailService) {
this.sendMailService = sendMailService;
}
public void run() {
// DB から スケジュールリストを取ります
List<ScheduleMail> schMailList = sendMailService.getSchMailList();
// List<ScheduleMail> schMailList = new ArrayList<ScheduleMail>();
factoryList = new ArrayList<ImpSchedulerFactory>();
for (ScheduleMail scheduleMail : schMailList) {
// Initiate a Schedule Factory
// SchedulerFactory schedulerFactory = new ImpSchedulerFactory(
// scheduleMail.getId());
ImpSchedulerFactory impSchedulerFactory = new ImpSchedulerFactory(scheduleMail.getId());
// Retrieve a scheduler from schedule factory
Scheduler scheduler;
try {
scheduler = impSchedulerFactory.getScheduler();
// current time
//long ctime = System.currentTimeMillis();
// Initiate JobDetail with job name, job group, and executable
// job
// class
JobDetail jobDetail = new JobDetail("jobDetail"+scheduleMail.getId(),
"jobDetailGroup"+scheduleMail.getId(), JobMail.class);
// Initiate CronTrigger with its name and group name
CronTrigger cronTrigger = new CronTrigger("cronTrigger"+scheduleMail.getId(),
"triggerGroup"+scheduleMail.getId());
// setup CronExpression
CronExpression cexp = new CronExpression(scheduleMail.getTime());
// Assign the CronExpression to CronTrigger
cronTrigger.setCronExpression(cexp);
// schedule a job with JobDetail and Trigger
scheduler.scheduleJob(jobDetail, cronTrigger);
// start the scheduler
scheduler.start();
factoryList.add(impSchedulerFactory);
} catch (SchedulerException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}