日期:2014-05-20  浏览次数:20688 次

Quartz作业调度中Job初始化的问题
使用Quartz,创建JobDetail时是这样的:
Java code
JobDetail jobDetail = JobBuilder.newJob(SimpleJob.class).withIdentity("Job1", "JobGroup1").build();

老版本的Quartz里面是这样的
Java code
JobDetail jobDetail = new JobDetail("job1","jGroup1", SimpleJob.class);


这边就碰到一个问题,SimpleJob实现了Quartz的Job接口,SimpleJob初始化的时候是通过JobBuilder.newJob(SimpleJob.class)或者new JobDetail("job1","jGroup1", SimpleJob.class)这种反射的初始化方式来的。

我的SimpleJob还有构造函数,每次触发前有好多属性需要set()一下。

请问,这种问题怎么解决?

------解决方案--------------------
你所说的属性,是不是就是JOB运行需要的参数啊,我一般是在JobDetail定义是PUT在JobDataMap中
Java code

        collectJobDetail = new JobDetail("JOB_"+objId, Scheduler.DEFAULT_GROUP,jobClass);
        collectJobDetail.getJobDataMap().put("hostIp",hostIp);
        collectJobDetail.getJobDataMap().put("port",port);
        Trigger trigger = TriggerUtils.makeMinutelyTrigger(minuteInterval);
    trigger.setName("JOB_Trigger_"+objId);
    trigger.setStartTime(new Date());
    quartzScheduler.scheduleJob(collectJobDetail,trigger);